【发布时间】:2013-01-17 18:45:13
【问题描述】:
我搜索了互联网但没有得到答案,可以解释一下它们之间的区别
【问题讨论】:
我搜索了互联网但没有得到答案,可以解释一下它们之间的区别
【问题讨论】:
一个 TCP “连接”是一个 4 元组。本地 IP、本地端口、远程 IP 和远程端口。每一端都在其 TCP 堆栈中维护此标识,但意义相反(本地与远程)。
这 4 个值的组合必须是唯一的。这解释了人们在编写 TCP 客户端时经常遇到的问题,该客户端重用套接字以重新连接到同一服务器。
“关闭”连接会将此 ID 留在每一端的表中一段时间,处于 TIME_WAIT 状态。这是一个 TCP 机制的产物,即使物理层连接中断,也可以保持连接完整性,阻止待处理的数据包被第二个连接接收等。TIME_WAIT 可以持续长达 4 分钟。
除非客户端将其套接字的 LocalPort 重置为 0(这是对自动临时端口分配的请求),否则如果在 TIME_WAIT 到期之前尝试重新连接,它可能会失败。由于对于新创建的套接字,这为 0,因此程序员在调用 Connect 之前通常会忽略此要求。
LocalPort 不仅仅是监听套接字的问题。
【讨论】:
服务器侦听本地端口,而客户端从本地端口发送数据。 客户端远程端口应该与服务器本地端口相同。 IE。: 服务器侦听端口 n(相对于服务器的本地端口) 客户端通过端口 n 连接到服务器(相对于客户端的远程端口)
要回答您的问题,区别在于名称,基于视角。
This seems to be a good place to start with VB6 socket communication
【讨论】: