windows - 仅连接到 localhost 时 Winsock 返回 10061

标签 windows networking winsock

我不明白发生了什么。如果我创建一个到 localhost 以外的任何地方(“localhost”、“127.0.0.1”或机器的外部 ip)的套接字,它工作正常。 如果我创建一个到某个地址的套接字,但没有在该端口中监听任何内容,我将得到 10060(超时),但不会得到有意义的 10061。为什么我在访问本地主机时连接被拒绝。 我尝试禁用防火墙,以防万一它把事情搞砸,但事实并非如此

在此之前我正在执行所有 WSA 初始化工作。

    _socketToServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if(_socketToServer == -1){
    return false;
    }

   p_int = (int*)malloc(sizeof(int));
   *p_int = 1;
   if( (setsockopt(_socketToServer, SOL_SOCKET, SO_REUSEADDR, 
       (char*)p_int, sizeof(int)) == -1 )||
       (setsockopt(_socketToServer, SOL_SOCKET, SO_KEEPALIVE, (char*)p_int,
               sizeof(int)) == -1 ) ){
        free(p_int);
        return false;
   }
   free(p_int);


   struct sockaddr_in my_addr;

   my_addr.sin_family = AF_INET ;
   my_addr.sin_port = htons(_serverPort);

   memset(&(my_addr.sin_zero), 0, 8);
   my_addr.sin_addr.s_addr = inet_addr(_serverIP);


   if( connect( _socketToServer, (struct sockaddr*)&my_addr, sizeof(my_addr)) 
        == SOCKET_ERROR ){
    DWORD error = GetLastError(); //here is where I get the 10061
    return false;
}

有什么想法吗?

最佳答案

连接到另一台计算机上的非监听端口时,不保证会出现 WSAETIMEDOUT 错误。可能会发生任意数量的不同错误。但是,通常仅当套接字在 connect() 超时之前无法到达网络上的目标计算机时,才会发生 WSAETIMEDOUT 错误。如果它可以到达目标机器,则 WSAECONNREFUSED 错误意味着目标机器正在确认 connect() 请求并回复说请求的端口无法接受当时的连接是因为它没有在监听或者它的积压已满(无法区分是哪一个)。因此,当您连接到本地主机时,在连接到非监听端口时,您几乎总是会收到 WSAECONNREFUSED 错误,因为您连接到同一台计算机,并且在确定端口时没有延迟。端口的监听状态。它与防火墙或反恶意软件无关。这只是正常行为。

关于windows - 仅连接到 localhost 时 Winsock 返回 10061,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307864/

相关文章:

windows - Wix Toolkit - MSI 安装程序 - 启动安装的应用程序时不断出现窗口弹出窗口

c++ - TCP 与 Enet 进行带大厅的在线纸牌游戏?

networking - 从 Kubernetes 服务访问主机 localhost

c++ - (WINSOCK) C++ 游戏服务器 : Too many TCP connections at once on TCPAccept

c - C 中的 Select() 问题(Windows 7)

c++ - Winsock accept() 返回 WSAENOTSOCK(代码 10038)

java - FileInputStream 是如何找到文件的?

c# - MySQL C# 值插入和 connection.open() 无法正常工作

networking - OpenBSD,通过网站身份验证连接到 WPA WiFi

c# - 在页面/主页面和子页面之间共享相同的 View 模型