gpt4 book ai didi

c++ - Windows 套接字 accept() 返回错误值

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:06 25 4
gpt4 key购买 nike

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

这是来 self 的服务器的一些代码:

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

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

为什么会这样?我该如何解决?

最佳答案

在 Windows 上,如果 accept() 失败,它返回 INVALID_SOCKET,而不是 SOCKET_ERROR

真正的问题是你的 if() 语句同时执行赋值和比较,但是它缺少赋值所需的一组括号,所以它实际上是在比较一个不同的值(value)超出您的预期。改为这样做:

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

更好的选择是将赋值和比较分开:

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

关于c++ - Windows 套接字 accept() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19255418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com