正在用 C++写一个 Windows 上的测试网络消息的工具,想在本地模拟服务器接收消息,引用了 WinSock2.h 。
模拟 Server 在 bind 地址后,客户端用设置好的端口 8xxx , 9xxx 都连不上去。 用 TCPView 工具可以看到我自己的模拟 Server 程序的 localport 是一个类似 47394 的随机的端口,这个端口客户端是可以连上的。
bind 后用 getsockname 获取到的端口也是一个随机端口,而且和 TCPView 看到的也不一样。
谁能帮忙解释下是什么情况?
1
wevsty 2017-03-27 16:59:16 +08:00
bind 用错了呗
|
2
newtype0092 OP ```
_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 的用法还有什么讲究么? |
3
wevsty 2017-03-27 17:13:13 +08:00 1
@newtype0092
sin_port = htons(8888); 参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/ms740496(v=vs.85).aspx |
4
newtype0092 OP @wevsty 谢谢了
|