C# 如何发送回UDP源地址?

C# 如何发送回UDP源地址?,c#,udp,client,port,C#,Udp,Client,Port,我有一个关于使用UDP在服务器和客户端之间进行通信的问题。我先解释一下我想做什么 客户端使用随机UDP源向服务器发送消息 静态服务器UDP端口(11000)的端口 然后,服务器学习客户端发送端口 然后,服务器使用另一条消息将消息发送回客户端 随机端口到客户端发送端口 问题是,只有当客户端随机端口在路由器上转发时,服务器才能发回。我不知道这是否可能,但服务器是否应该能够使用客户端用于发送的相同端口将数据发送回客户端,而不转发端口?我也读过关于打孔的书,但如果我理解正确的话,它只在需要点对点连接

我有一个关于使用UDP在服务器和客户端之间进行通信的问题。我先解释一下我想做什么

  • 客户端使用随机UDP源向服务器发送消息 静态服务器UDP端口(11000)的端口
  • 然后,服务器学习客户端发送端口
  • 然后,服务器使用另一条消息将消息发送回客户端 随机端口到客户端发送端口
问题是,只有当客户端随机端口在路由器上转发时,服务器才能发回。我不知道这是否可能,但服务器是否应该能够使用客户端用于发送的相同端口将数据发送回客户端,而不转发端口?我也读过关于打孔的书,但如果我理解正确的话,它只在需要点对点连接时才需要。服务器有一个静态ip。我正在用C#尝试这个

我希望问题是清楚的。提前谢谢

编辑:有关设置的信息: 客户端是一个游戏客户端,它应该能够从几乎任何位置连接到服务器。(它目前正在我的家用电脑上运行)。服务器位于学校,具有静态IP。服务器上的所有端口都已打开,服务器也用于ftp,并且有一个使用TCP的服务器正在运行。这些东西很好用。TCP之所以能够工作,是因为它创建了一个连接,服务器使用该连接发送回客户端。UDP的问题是服务器无法发送回客户端,因为UDP是无连接的

就像我说的,如果我在客户端打开端口,一切都会很好。但我的问题是:如何在不打开客户端端口的情况下将数据发送回客户端?大多数游戏不需要您打开端口。那么,有没有可能在不发送端口转发的情况下发送回,或者我可以使用C#打开一个端口

编辑2:找到答案了吗 我找到了答案。要进行通信,您需要使用相同的UdpClient进行发送和接收。我用一个发送,一个接收


Degor

您能更精确地进行设置吗?服务器在哪里?在你那边?客户来自互联网?服务器前面有防火墙吗?为什么使用随机端口?