不知者无畏...有连接上来了,但是你没有accept,此时你得监听socket用select的读集绑定后会有返回,FD_ISSET会发现该socket可读下面是msdn原话,仔细看In summary, a socket will be identified in a particular set when select returns if:readfds:[color=#FF0000]If listen has been called and a connection is pending, accept will succeed. Data is available for reading (includes OOB data if SO_OOBINLINE is enabled). Connection has been closed/reset/terminated.[/color]
In summary, a socket will be identified in a particular set when select returns if:readfds:[color=#FF0000]If listen has been called and a connection is pending, accept will succeed. Data is available for reading (includes OOB data if SO_OOBINLINE is enabled). Connection has been closed/reset/terminated.[/color]
#include <stdio.h>void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5); SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR); while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"Welcome %s to here",
inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
closesocket(sockConn);
}
}
bool iscuming()
{
if() //我句应该怎么写
{
a.accept(b);
return false; //连接并且终止线程运行
}
else
{
return true;//继续运行等待连接
}
}
DWORD WINAPI ACC(LPVOID a)
{
while(true)
{
iscuming();
}
}
怎么在没有accept的情况下 来判断客户来了 就是这个问题 谢谢~
可以用select()函数来判断一下
Data is available for reading (includes OOB data if SO_OOBINLINE is enabled).
Connection has been closed/reset/terminated.[/color]
Data is available for reading (includes OOB data if SO_OOBINLINE is enabled).
Connection has been closed/reset/terminated.[/color]