V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
newtype0092
V2EX  ›  C

Windows 上 Socket bind 不到自己设置的端口号上

  •  
  •   newtype0092 · 2017-03-27 16:29:07 +08:00 · 2422 次点击
    这是一个创建于 2585 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在用 C++写一个 Windows 上的测试网络消息的工具,想在本地模拟服务器接收消息,引用了 WinSock2.h 。

    模拟 Server 在 bind 地址后,客户端用设置好的端口 8xxx , 9xxx 都连不上去。 用 TCPView 工具可以看到我自己的模拟 Server 程序的 localport 是一个类似 47394 的随机的端口,这个端口客户端是可以连上的。

    bind 后用 getsockname 获取到的端口也是一个随机端口,而且和 TCPView 看到的也不一样。

    谁能帮忙解释下是什么情况?

    4 条回复    2017-03-27 17:28:28 +08:00
    wevsty
        1
    wevsty  
       2017-03-27 16:59:16 +08:00
    bind 用错了呗
    newtype0092
        2
    newtype0092  
    OP
       2017-03-27 17:07:21 +08:00
    ```
    _sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = 8888;
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    errMsg = bind(_sock, (sockaddr*)&serverAddr, sizeof(serverAddr));
    ```
    @wevsty 我是这么调用的,这个 bind 的用法还有什么讲究么?
    wevsty
        3
    wevsty  
       2017-03-27 17:13:13 +08:00   ❤️ 1
    newtype0092
        4
    newtype0092  
    OP
       2017-03-27 17:28:28 +08:00
    @wevsty 谢谢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3345 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:37 · PVG 19:37 · LAX 04:37 · JFK 07:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.