18,356
社区成员
发帖
与我相关
我的任务
分享
while(1)
{
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
SOCKET recv_socket=((RECVPARAM*)lpParameter)->sock_refer;
HWND hwnd=((RECVPARAM*)lpParameter)->hwnd;
//delete lpParameter;
SOCKET sockConn=accept(recv_socket,(SOCKADDR*)&addrClient,&len);//等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)
if(sockConn==SOCKET_ERROR)
{
AfxMessageBox("数据接收失败!");
//error=WSAGetLastError();
closesocket(sockConn);
return 0;
}
char recvBuf[1000];
memset(recvBuf,'\0',1000);
recv(sockConn,recvBuf,1000,0);
if(recvBuf[0]=='H'&&recvBuf[1]=='E'&&recvBuf[2]=='L'&&recvBuf[3]=='P')
{
char recvdataram[1000];
int i;
mode=1;
::PostMessage(hwnd,WM_RECVDATA,0,0);
remoteram[0]=0;
while(!remoteram[0])
Sleep(100);
send(sockConn,remoteram,100,0);//用返回的套接字和客户端进行通讯
memset(recvdataram,'\0',1000);
database[0]='\0';
for(i=0;i<6;i++)
{
int recvret=recv(sockConn,recvdataram,1000,0);
if(recvret==SOCKET_ERROR)
{
AfxMessageBox("数据接收失败!");
closesocket(sockConn);
return 0;
}
strcat(database,recvdataram);
database[(i+1)*1000]='\0';
}
for(i=0;i<6000;i=i+2)
{
if(database[i]>'9')
database[i]=database[i]-0x37;
else
database[i]=database[i]-0x30;
if(database[i+1]>'9')
database[i+1]=database[i+1]-0x37;
else
database[i+1]=database[i+1]-0x30;
database[(i/2)]=database[i]*16+database[i+1];
}
closesocket(sockConn);
mode=3;
::PostMessage(hwnd,WM_RECVDATA,0,0);
mode=2;
::PostMessage(hwnd,WM_RECVDATA,0,0);
}
else
{
DWORD dwAddress=ntohl(addrClient.sin_addr.S_un.S_addr);
char OK[]="OK";
int Length_ok=strlen(OK);
int send_ok=send(sockConn,OK,Length_ok,0);//用返回的套接字和客户端进行通讯
if(send_ok==SOCKET_ERROR)
AfxMessageBox("发送过程中发生一个错误!",NULL,MB_OK);
// closesocket(sockConn);
mode=0;
::PostMessage(hwnd,WM_RECVDATA,(WPARAM)dwAddress,(LPARAM)recvBuf);
}
}