Accept = WSAAccept(m_Listen, NULL, NULL, NULL, 0)) == SOCKET_ERROR
主线程是不是会停在这儿直到有连接请求才会有响应啊?那没有连接的时候我的界面就象死了机一样有什么办法让它处理消息吗?
主线程是不是会停在这儿直到有连接请求才会有响应啊?那没有连接的时候我的界面就象死了机一样有什么办法让它处理消息吗?
解决方案 »
- 关于GLUT
- 请问能不能写一个UTF8转化到Unicode的函数
- who can answer the question,when I make the program,it displayed an error info like follows:
- 能不能将CEDIT框选中时光标不显示的啊!
- 急问:如何不让CEdit弹出右键菜单?先谢谢相助的高手们!
- 关于USB设备驱动的问题
- vc++6.0运行后,不知道为什么总显示错误,求高人指点
- 征求一程序设计思路
- vc++操作excel
- 有关协作开发
- 请问 怎样把一个目录下的所有扩展名为.rmvb的文件改为扩展名为.avi?
- GetOpenFileName函数出错
{ unsigned long RecvBytes=0,Flags = 0;
Socket aSocket; //,*paSocket
//int port=*((int *)lpParam );
int port=1981; //step 4 准备socket侦听
sTcpServer=socket(AF_INET,SOCK_STREAM,0);
Localaddr.sin_family=AF_INET;
Localaddr.sin_addr.s_addr = inet_addr("192.168.168.105");//INADDR_ANY;// //htonl(INADDR_ANY);
Localaddr.sin_port=htons(port);
bind(sTcpServer,(SOCKADDR *)&Localaddr,sizeof(Localaddr)); listen(sTcpServer,MaxClientCount); while(bContinue)
{
sAccept=WSAAccept(sTcpServer,NULL,NULL,NULL,0); //添加socket列表
aSocket.SocketVar=(int)sAccept;
if (0!=addsocket(aSocket.SocketVar))
{
//释放 单句柄结构
//GlobalFree(PerHandleData);
//GlobalFree(PerIoData);
closesocket(sAccept);
continue;
} PerHandleData=(LPPER_HANDLE_DATA)GlobalAlloc(GPTR,sizeof(PER_HANDLE_DATA));
//创建一个单句柄结构
//printf("Socket number %d connected\n",sAccept);
PerHandleData->Socket =sAccept;
//把accept socket信息放到单句柄信息中 CreateIoCompletionPort((HANDLE)sAccept,hCICP,(DWORD)PerHandleData,0);
//把这个单句柄结构 与 accept socket 关联起来 PerIoData = (LPPER_IO_OPERATION_DATA)GlobalAlloc(GPTR,sizeof(PER_IO_OPERATION_DATA));
ZeroMemory(&(PerIoData->Overlapped), sizeof(OVERLAPPED));
PerIoData->BytesSEND = 0;
PerIoData->BytesRECV = 0;
PerIoData->DataBuf.len = DATA_BUFSIZE;
PerIoData->DataBuf.buf = PerIoData->Buffer;
PerIoData->OperationType = RECV_POSTED;
if (WSARecv(sAccept, &(PerIoData->DataBuf), 1, &RecvBytes, &Flags,&(PerIoData->Overlapped), NULL) == SOCKET_ERROR)
{
if (WSAGetLastError() != ERROR_IO_PENDING)
{
// socket deal
// printf("WSARecv() failed with error %d\n", WSAGetLastError());
}
}
} return 0;
}