virtual int acceptConnect(ConnectInfo* connInfo , unsigned int sec=1)
{
TIMEVAL tv;
tv.tv_sec = sec;
tv.tv_usec = 0;
fd_set rfd;
FD_ZERO(&rfd);
FD_SET(basicSocket, &rfd);
//是否有客户端接入
int c = select(0, &rfd, NULL, NULL, &tv);
if(c > 0)
{
// conInfo->sd = ;
//for(int i = 0 ;i < c; i++)
//{
cout<<"oh my God ,there was a client"<<endl;
sockaddr_in socaddr;
memset(&socaddr, 0, sizeof(socaddr));
int nlen = sizeof(socaddr);
connInfo->sd = accept(basicSocket, (sockaddr*)&socaddr, &nlen);
connInfo->port = socaddr.sin_port;
connInfo->addr = socaddr.sin_addr.S_un.S_addr;
//acceptedSocket = acceptedSockets;
//closesocket(connInfo->sd);
} return c;
}在while循环里调用该函数。最初没有客户端接入时为什么会select到客户端。
ip显示为本机ip。每次运行端口是随机的。发送的数据是一个“d”
不明白为什么
{
TIMEVAL tv;
tv.tv_sec = sec;
tv.tv_usec = 0;
fd_set rfd;
FD_ZERO(&rfd);
FD_SET(basicSocket, &rfd);
//是否有客户端接入
int c = select(0, &rfd, NULL, NULL, &tv);
if(c > 0)
{
// conInfo->sd = ;
//for(int i = 0 ;i < c; i++)
//{
cout<<"oh my God ,there was a client"<<endl;
sockaddr_in socaddr;
memset(&socaddr, 0, sizeof(socaddr));
int nlen = sizeof(socaddr);
connInfo->sd = accept(basicSocket, (sockaddr*)&socaddr, &nlen);
connInfo->port = socaddr.sin_port;
connInfo->addr = socaddr.sin_addr.S_un.S_addr;
//acceptedSocket = acceptedSockets;
//closesocket(connInfo->sd);
} return c;
}在while循环里调用该函数。最初没有客户端接入时为什么会select到客户端。
ip显示为本机ip。每次运行端口是随机的。发送的数据是一个“d”
不明白为什么
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货