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

2017-03-27 16:29:07 +08:00
 newtype0092

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

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

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

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

2549 次点击
所在节点    C
4 条回复
wevsty
2017-03-27 16:59:16 +08:00
bind 用错了呗
newtype0092
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
2017-03-27 17:13:13 +08:00
newtype0092
2017-03-27 17:28:28 +08:00
@wevsty 谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/350657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX