从同一TCP端口发送和接收数据包

时间:2017-08-20 05:49:40

标签: java sockets networking tcp

我有两个自定义程序,一个发送数据流,另一个接收该流以进行进一步处理。是否可以将数据发送到一个TCP端口并从同一端口接收(读取)该数据?如果没有,你可以推荐任何替代方法。任何帮助将不胜感激。 (这两个程序在同一台机器上运行)

1 个答案:

答案 0 :(得分:0)

TCP连接有两端,允许双向通信。每端的发送端口是另一端的接收端口。总是如此。

如果您要询问每个终端的发送端口是否可以与另一端的接收端口相同,则答案是肯定的。情况总是如此。

如果你问两端是否可以有相同的发送和接收端口,答案是:

1)如果两端的源IP地址相同(比如说127.0.0.1),那么绝对不行。如果可能,则无法区分两个端点。

2)如果两个发送的源IP地址不同(一端为127.0.0.2,另一端为127.0.0.3),这在理论上是可行的,如果您正在使用,很容易发生两台不同的机器。但据我所知,如果两端都在同一台机器上,则没有通用的TCP / IP堆栈允许以这种方式使用单个端口。一旦您正在侦听端口,就不允许将该端口用作源端口。如果您使用端口作为源端口,则不允许您开始收听端口。

但我觉得你提出了错误的问题。如果你澄清了你想要做的事情和原因,你可能会得到一个对你更有帮助的不同问题的答案。