如果我只有SOCKET,我可以找到端口号吗?

时间:2012-03-17 07:45:16

标签: c++ sockets winsock

如果我只有SOCKET,我可以找到端口号吗?我正在挂钩ws2_32,似乎SOCKET正在尝试发送数据,但我没有关于此SOCKET的信息。我想知道是否还有来自SOCKET的sockaddr或端口?

我遇到了与UDP套接字类似的问题,但我通过从sockaddr获取端口号来修复它,当它即将发送数据并更新我的信息时。但问题是,除了SOCKET之外,我没有什么可以解决的。

程序正在使用端口0创建SOCKET,稍后它会将其分配给新端口。到那时,我的程序在套接字上的信息已经使用端口0设置,这是不正确的。所以,我需要找到一种方法...... A:根据SOCKET找到端口,或者B:当Windows更新端口时,我可以挂钩并更新端口。

1 个答案:

答案 0 :(得分:3)

有两个功能完全符合您的要求:

  1. getpeername - 获取有关TCP连接另一端的信息
  2. getsockname - 获取有关TCP和UDP
  3. 的套接字(本地端)的信息