首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winsock服务器不接受连接

winsock服务器不接受连接
EN

Stack Overflow用户
提问于 2019-10-07 17:33:22
回答 1查看 149关注 0票数 0

我有一个简单的TCP服务器应用程序,不接受任何连接。它目前是使用VS2019构建的,但最初(一段时间之前)是使用VS2012构建的。原始版本可以工作,但2019版本永远不会接受。我可以调查哪些领域?我没有访问客户端代码的权限。这是我的服务器代码

代码语言:javascript
复制
  int iResult;
   WSADATA wsaData;
   // Initialize Winsock
   iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
   if (iResult != 0) {
      printf("WSAStartup failed: %d\n", iResult);
      return 1;
   }
#define DEFAULT_PORT "8082"

   struct addrinfo* result = NULL, * ptr = NULL, hints;

   ZeroMemory(&hints, sizeof(hints));
   hints.ai_family = AF_INET;
   hints.ai_socktype = SOCK_STREAM;
   hints.ai_protocol = IPPROTO_TCP;
   hints.ai_flags = AI_PASSIVE;

   // Resolve the local address and port to be used by the server
   iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
   if (iResult != 0) {
      printf("getaddrinfo failed: %d\n", iResult);
      WSACleanup();
      return 1;
   }

   SOCKET ListenSocket = INVALID_SOCKET;

   ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);

   if (ListenSocket == INVALID_SOCKET) {
      printf("Error at socket(): %ld\n", WSAGetLastError());
      freeaddrinfo(result);
      WSACleanup();
      return 1;
   }

   iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
   if (iResult == SOCKET_ERROR) {
      printf("bind failed with error: %d\n", WSAGetLastError());
      freeaddrinfo(result);
      closesocket(ListenSocket);
      WSACleanup();
      return 1;
   }
   printf("bound\n");
   if (listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR) {
      printf("Listen failed with error: %ld\n", WSAGetLastError());
      closesocket(ListenSocket);
      WSACleanup();
      return 1;
   }

   SOCKET ClientSocket;

   ClientSocket = INVALID_SOCKET;

   // Accept a client socket
   ClientSocket = accept(ListenSocket, NULL, NULL);
   if (ClientSocket == INVALID_SOCKET) {
      printf("accept failed: %d\n", WSAGetLastError());
      closesocket(ListenSocket);
      WSACleanup();
      return 1;
   }

   printf("connected\n");

这是wireshark的输出

这是来自netsat的

EN

回答 1

Stack Overflow用户

发布于 2019-10-08 18:01:59

发现问题是防火墙停止了连接请求

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58266883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档