c - 为什么netstat未列出我的套接字的开放端口?

标签 c sockets winapi winsock netstat

如果运行此示例,您将看到netstat从未列出该端口。为什么?我该怎么做呢?

#include <WinSock.h>
#include <io.h>
#include <stdio.h>

#pragma comment(lib, "WS2_32")

int main() {
    WORD wVers = MAKEWORD(2, 2);
    WSADATA wsa;
    WSAStartup(wVers, &wsa);
    SOCKET sock = socket(AF_INET, SOCK_STREAM, 6);
    if (sock != INVALID_SOCKET) {
        struct sockaddr_in addr = { 0 };
        addr.sin_family = AF_INET;
        addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
        int addrlen = sizeof(addr);
        bind(sock, (struct sockaddr *)&addr, addrlen);
        if (getsockname(sock, (struct sockaddr *)&addr, &addrlen) == 0) {
            fprintf(stdout, "HANDLE = %d, port = %d\n", sock, addr.sin_port);
            fflush(stdout);
            system("netstat -a -n");
        }
        closesocket(sock);
    }
    WSACleanup();
}

最佳答案

netstat -a仅列出连接的套接字和监听套接字。

  -a            Displays all connections and listening ports.

套接字上都没有调用connectlisten,因此它不在netstat -a的权限范围内。

但是,从Windows 10开始,您可以使用netstat -q
  -q            Displays all connections, listening ports, and bound

关于c - 为什么netstat未列出我的套接字的开放端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40875857/

相关文章:

c - Win32 调度程序并将标准输出重定向到文件缓冲区问题?

c++ - 如何确定进程打开文件的顺序?

c++ - CBS_DROPDOWNLIST 组合无法响应 WM_CTLCOLOR ... 在 Windows UX 主题下

c - 为什么我的程序只打印出每隔一个字符? C

sockets - “Volley”错误: java.net.SocketException:recvfrom失败:ECONNRESET(对等连接重置)

c - 如何遍历一个字节的每一位

C多线程死锁的线程事件

iOS 到 linux 使用套接字连接

c++ - 基本 C++ 字符串指针

c - 使用列表内存 - 家庭作业