比如说,你的客户端IP是192.168.0.100,端口号是4000,使用Udp方式向服务器 202.100.200.123:8000 发送了一个消息,那么经过路由器——不管中间有几个路由器——最终是以 211.149.101.21:62018 发送出去的,那么这时候难道有人告诉你说“你的服务器要向 192.168.0.100:4000 发送 Udp 返回值啊!”么?这就是误导你了。 最起码的Udp服务器端编程,也是向你的服务器端 Receive 语句所返回的 RemoteIpEndPoint(也就是211.149.101.21:62018 ) 发送返回值,这样才能最终到达局域网内 192.168.0.100:4000。而这个 RemoteIpEndPoint 的值每一次可能都是变动的,因为路由器会采用不同的端口发送不同的消息。 然后,对于客户端,你根本没有必要绑定 4000端口。你的 new UdpClient() 得到的这个对象,可以发送消息,紧接着Receive,就能收到返回值。发送端口号(不管是4000还是40000)应该由人家自动选择,你只定一个端口号没有多少好处。 当然这里是指一般的Udp通讯的概念。如果你有什么特别的“设计”,或许你确实需要固定内部端口号。但是那也是在你确实知道基本的概念之后的事情。
[quote=引用 楼主 lwy7758 的回复:] 请问下, 我想实现客户端和服务端的UDP通信, 但是需要Client端4000发送数据到Server端的8000, 并且4000再收取Server端发回的数据, 这个能实现吗? 可以的话怎么写呢? 我用UDPClient不能在一个端口上操作.
当然没问题啊。Client4000>Server8000 然后 Server8000>Client4000 这样很正常啊。我理解错了没
[quote=引用 2 楼 Z65443344 的回复:] 为什么要这样设计? 你就不敢两台电脑都用4000发,用8000收?
请问下, 我想实现客户端和服务端的UDP通信, 但是需要Client端4000发送数据到Server端的8000, 并且4000再收取Server端发回的数据, 这个能实现吗? 可以的话怎么写呢? 我用UDPClient不能在一个端口上操作.
为什么要这样设计? 你就不敢两台电脑都用4000发,用8000收?
111,097
社区成员
642,554
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧