socket

来源:互联网 发布:软件测试项目 编辑:程序博客网 时间:2024/06/11 19:47
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <string.h>#include <windows.h>   #include "define.h"   #pragma comment( lib, "ws2_32.lib"  )#define SERVER_PORT 1234 //侦听端口DWORD WINAPI Threadfunc(Handle Thread){}void shownum(int length,int number,tagPrinterData buffer[]){for(int i=0;i<number*length;i++){   printf("x=%d, y=%d, z=%d\n",buffer[i].XAxis,buffer[i].YAxis,buffer[i].ZAxis);}}void main(){WORD wVersionRequested;WSADATA wsaData;int ret;SOCKET sClient; //连接套接字struct sockaddr_in saServer; //地址信息char *ptr;BOOL fSuccess = TRUE;//WinSock初始化wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本ret = WSAStartup(wVersionRequested, &wsaData);if(ret!=0){printf("WSAStartup() failed!\n");return;}//确认WinSock DLL支持版本2.2if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2){WSACleanup();printf("Invalid WinSock version!\n");return;}//创建Socket,使用TCP协议sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sClient == INVALID_SOCKET){WSACleanup();printf("socket() failed!\n");return;}//构建服务器地址信息saServer.sin_family = AF_INET; //地址家族saServer.sin_port = htons(SERVER_PORT); //注意转化为网络节序saServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.4");//连接服务器ret = connect(sClient, (struct sockaddr *)&saServer, sizeof(saServer));if (ret == SOCKET_ERROR){printf("connect() failed!\n");closesocket(sClient); //关闭套接字WSACleanup();return;}tagPackage packRecv;//  ptr = (char *)&packRecv;int m=1;while(1){memset(&packRecv, 0, sizeof(packRecv)); recv(sClient,(char *)&packRecv,sizeof(packRecv),0);int len=packRecv.pckHeader.dwLength;int num=packRecv.pckHeader.dwPackNum;tagPrinterData buf[100];memcpy(buf,(void*)packRecv.pckBody.dwBody,sizeof(tagPrinterData)*len);  //first packegefor(int j=1;j<num;j++)    //2nd,3rd,4th,...{ recv(sClient,(char *)&packRecv,sizeof(packRecv),0);for(int i=0;i<len;i++){//tagPrinterData printerdata;//int size=sizeof(printerdata);//memcpy(&printerdata,&packRecv.pckBody.dwBody[i*size],size);memcpy(buf,&packRecv.pckBody.dwBody,sizeof(tagPrinterData)*len);//buf[i+j*len].XAxis=printerdata.XAxis;//buf[i+j*len].YAxis=printerdata.YAxis;//buf[i+j*len].ZAxis=printerdata.ZAxis;// printf("x=%d, y=%d, z=%d\n",printerdata.XAxis,printerdata.YAxis,printerdata.ZAxis);}// printf("length:%d\n",packRecv.pckHeader.dwLength);          // recv(sClient,(char *)&packRecv,sizeof(packRecv),0);}printf("task : %d \n",m);shownum(len,num,buf);m++;}if (ret == SOCKET_ERROR){printf("send() failed!\n");}elseprintf("client info has been sent!");closesocket(sClient); //关闭套接字WSACleanup();}

0 0