#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.2
if(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 packege
for(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");
}
else
printf("client info has been sent!");
closesocket(sClient); //关闭套接字
WSACleanup();
}
socket
最新推荐文章于 2024-04-22 19:40:16 发布