C# UDP/TCP发送&;无端口转发接收

C# UDP/TCP发送&;无端口转发接收,c#,tcp,udp,C#,Tcp,Udp,情景: A希望将数据发送到端口12345上的B B需要端口转发,以便接收传入连接 B是否有任何方法可以在不进行端口转发的情况下接收数据 孔穿孔中间需要一个服务器。那么有没有其他方法,所以不需要在中间有服务器? UPNP不是一个好的选择,因为据我所知,它要求路由器启用它。不可能(据我所知)在不共享同一网络的两个客户端之间传递而不引用端口号。无论是TCP还是UDP,都不重要。 您从计算机发送的每一个数据都会被转换并包装为一个数据包—始终如此使用哪种编程语言并不重要,因为根据 网络数据包必须包含:

情景:

A希望将数据发送到端口12345上的B

B需要端口转发,以便接收传入连接

B是否有任何方法可以在不进行端口转发的情况下接收数据

<强>孔穿孔中间需要一个服务器。那么有没有其他方法,所以不需要在中间有服务器?

UPNP不是一个好的选择,因为据我所知,它要求路由器启用它。

不可能(据我所知)在不共享同一网络的两个客户端之间传递而不引用端口号。无论是TCP还是UDP,都不重要。
您从计算机发送的每一个数据都会被转换并包装为一个数据包—始终如此
使用哪种编程语言并不重要,因为根据

网络数据包必须包含:

  • 源IP
  • 源端口
  • 目的IP
  • 目标端口
为了更好地理解,我可以考虑一个小类比:

想象一下,你想在一个陌生的地方拜访一位朋友 国家。
您知道要飞往哪个国家(外部ip地址)
您知道您在这个国家的朋友地址(内部ip地址)。
但是当你到达目的地时,你不知道该坐哪趟火车才能到达你朋友的家(港口号)。
因此,如果不知道确切的列车(端口号),你就不可能去拜访你的朋友。
如果您去询问机场的信息站(路由器),该车次确实存在(路线图/端口转发配置) 他们会告诉你需要坐哪趟火车,你就能去拜访你的朋友了


这就是您必须在路由器中配置端口转发的原因-为了更新路由图

“B需要端口转发”是您的场景的一部分,因此根据定义,您的问题的答案是“否”。您认为将数据发送到B而不是转发的确切含义是什么?我的问题是。如果B不能或不知道如何转发端口,是否有其他方法发送数据?您到底想做什么?让B启动连接。