在我程序的服务器端,当程序点击接受函数时,它会等待连接。找到传入连接(在我与客户端连接之后)后,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 )
...
或至少加上括号。