0 c++ sockets windows networking
在我的程序的服务器端,当程序命中接受函数时,它等待连接.找到连接传入后(在我与客户端连接后),accept()方法返回1.基于该返回,它尝试接收并发送到套接字1,这是一个错误的套接字.
这是我服务器的一些代码:
for(;;)
{
if( sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen) != SOCKET_ERROR)
Run Code Online (Sandbox Code Playgroud)
找到连接后,sConnect的值为1.
为什么会这样?我该如何解决?
在Windows上,如果accept()失败,则返回INVALID_SOCKET,而不是SOCKET_ERROR.
真正的问题是你的if()语句同时执行赋值和比较,但它缺少一个必需的赋值括号,所以它实际上是在比较一个不同于你预期的值.改为:
if( (sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen)) != INVALID_SOCKET )
Run Code Online (Sandbox Code Playgroud)
更好的选择是分配分配和比较:
sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen);
if( sConnect != INVALID_SOCKET )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |