服务程序 recvfrom收不到数据
int Error;
SOCKET socket1;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested=MAKEWORD(2,2);
Error=WSAStartup(VersionRequested,&WsaData); //启动WinSock2
char szError[256];
DWORD dwError = GetLastError();
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
0,
szError,
sizeof(szError),
NULL);
::MessageBox(NULL,szError,"",0);
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen =sizeof(from);
local.sin_family=AF_INET;
local.sin_port=htons(8000); ///监听端口
local.sin_addr.s_addr=htonl(INADDR_ANY); ///本机
socket1=socket(AF_INET,SOCK_DGRAM,0);
bind(socket1,(struct sockaddr*)&local,sizeof local);
dwError = GetLastError();
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
0,
szError,
sizeof(szError),
NULL);
::MessageBox(NULL,szError,"",0);
while (1)
{
char buffer[1024]= "\0 ";
//printf( "waiting for message from others-------------\n ");
int rr=recvfrom(socket1,buffer,sizeof buffer,0,NULL,NULL)!=SOCKET_ERROR;
{ //MessageBox(NULL,"","",0);
FILE *file1;
file1=fopen( "c:\\Client.txt ", "a+ ");
fwrite(buffer,sizeof(char)*1024,rr,file1);
fclose(file1);
}
Sleep(500);
}
closesocket(socket1);
在服务程序中到int rr=recvfrom(socket1,buffer,sizeof buffer,0,NULL,NULL)!=SOCKET_ERROR;
就阻塞在那里,设置为非阻塞方式,返回为“无法立即完成一个非阻挡性套接字操作”,将这段代码放在一般程序中执行很好!
计算机一直在接受数据。。
这到底是怎么回事儿呢????