TCP连接时,服务器端为什么通过accept函数的返回值就可以获得客户端的socket?
答案:2 悬赏:10
解决时间 2021-01-04 07:51
- 提问者网友:空白
- 2021-01-03 08:48
TCP客户端并没有绑定客户端的socket(IP地址和端口号),那么服务器端是如何通过accept()来获取客户端的socket的呢?这点没想明白,还望指点。
最佳答案
- 二级知识专家网友:情战辞言
- 2021-01-03 08:57
我记得那个函数与你写的有一点差别。
那个函数原型是这样的:
SOCKET accept( SOCKET s,struct sockaddr FAR *addr,int FAR *addrlen);
第一个参数是被置于监听状态的SOCKET,第二个参数是用来接收发送连接的SOCKET的地址,第三个参数是接收到的地址的长度。
按你的参数应当是:
sockAddr = accept(m_sockServer,&sockAddr,&nSocketLen);
if(INVALID_SOCKET == sockAddr)
{
Afxmessagebox("Accept SOCKET fail!");
return 0;
}
因为accept是一个阻塞函数,所以建议创建一个线程后在线程中处理这个函数。
那个函数原型是这样的:
SOCKET accept( SOCKET s,struct sockaddr FAR *addr,int FAR *addrlen);
第一个参数是被置于监听状态的SOCKET,第二个参数是用来接收发送连接的SOCKET的地址,第三个参数是接收到的地址的长度。
按你的参数应当是:
sockAddr = accept(m_sockServer,&sockAddr,&nSocketLen);
if(INVALID_SOCKET == sockAddr)
{
Afxmessagebox("Accept SOCKET fail!");
return 0;
}
因为accept是一个阻塞函数,所以建议创建一个线程后在线程中处理这个函数。
全部回答
- 1楼网友:我的任性你不懂
- 2021-01-03 09:52
我。。知。。道
加。。我。。私。。聊
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯