在我程序的服务器端,当程序点击接受函数时,它会等待连接。找到传入连接(在我与客户端连接之后)后,accept()方法返回1。基于该返回值,它尝试接收并发送到错误的套接字1。

这是我服务器上的一些代码:

for(;;)
{
   if( sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen)  != SOCKET_ERROR)


找到连接后,sConnect的值为1。

为什么会这样?以及如何解决?

最佳答案

因为您将accept值返回的值与SOCKET_ERROR进行比较,并将此布尔值分配给sConnect

if( sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen)  != SOCKET_ERROR)


我个人不喜欢这么长的排队。分开分配和比较:

sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen);
if( sConnect != SOCKET_ERROR )
...


或至少加上括号。

10-06 13:27