udp发送端口号必须要了解的事

 

在csdn上, 有人问了一个这个问题, 下面有为大神是这么回复的, 便于理解udp:
 

引用 楼主 lwy7758 的回复:

请问下, 我想实现客户端和服务端的UDP通信, 但是需要Client端4000发送数据到Server端的8000, 并且4000再收取Server端发回的数据, 这个能实现吗? 可以的话怎么写呢? 我用UDPClient不能在一个端口上操作.

 

我的程序原理:客户端向服务器端发送一个请求后,服务器端不停地向客户端发送数据,直到客户端关闭。
可由于要用无连接的UDP,客户端正常/异常关闭后服务器端还在不停地发数据,因为我不知道怎样检测对方的UDP socket已关闭。


发送端口不需要固定什么4000,随机由UdpClient 选择一个发送端口就行。发送之后,立刻读取数据。而服务器端从端口8000接收到请求,应该立刻向客户端(接收消息时就会获得RemoteIpEndPoint客户端对外端口)发送返回(比如说200毫秒以内),这样就能让发送消息的客户端收到返回结果。

要注意的是,Udp通讯时你必须较快地让服务器发送返回消息,否则中间的路由器可能已经中断了处理、不再允许外部主动联系内部了。

这里有必要纠正几个很容易误导人的概念:
1. 客户端不需要固定端口,客户端发送消息时应该由UdpClient自动选择可用的端口。
2. 不要说什么“服务器向4000端口发送消息”,那是瞎扯,是因为只在小办公室里几台电脑规模的小网络下搞测试造成的。真正应用网络环境下,大部分客户端都在NAT路由器以后,就算是客户端绑定了4000固定端口,经过1个或者多个NAT路由器处理,那么服务器端针对的客户端端口也不大可能是4000,此时服务器端可能应该向“最终路由器IP、端口号62102”发送返回消息,才能到达内部局域网IP、4000号端口这里来。
3. 服务器不可能向NAT内部的客户端主动发起消息,必须等客户端发送消息,然后赶紧发送返回值。因为NAT路由器只会为Udp消息的这种回发规则维护一个较短时间,在这个较短时间上由外部发来的消息才能被路由器正确转发给内部。

比如说,你的客户端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通讯的概念。如果你有什么特别的“设计”,或许你确实需要固定内部端口号。但是那也是在你确实知道基本的概念之后的事情。

 

UDP 在线端口测试工具是一种用于测试网络设备或主机的 UDP 端口是否开放的工具。UDP(用户数据报协议)是一种无连接的传输协议,它不需要建立连接就可以传输数据,因此在网络中常用于音频、视频等实时传输应用。 UDP 在线端口测试工具可以通过发送 UDP 数据包来检测目标主机是否打开了特定的 UDP 端口。用户可以通过输入目标主机的 IP 地址和端口号,向目标主机发送 UDP 数据包。如果目标主机响应了这个数据包,那么这个 UDP 端口就是开放的,如果目标主机没有响应,那么这个 UDP 端口就是关闭的。 UDP 在线端口测试工具常用于网络管理员或安全研究人员进行网络设备或主机的漏洞扫描。例如,用户可以用这个工具来检测目标主机上是否存在未经授权的 UDP 服务,以及这些服务是否存在安全漏洞。通过测试 UDP 端口的开放状态,用户可以了解目标主机上开放的 UDP 服务和可能存在的风险,从而采取相应的安全措施。 此外,UDP 在线端口测试工具还可以用于网络故障排除。当用户在访问某个 UDP 服务时遇到问题,可以使用这个工具来检测目标主机上与这个服务相关的 UDP 端口是否开放,从而判断问题出在客户端还是服务器端。通过这个工具的测试结果,可以确定网络故障的原因,更快地解决问题。 综上所述,UDP 在线端口测试工具是一种方便实用的工具,可用于漏洞扫描、安全评估以及网络故障排除等任务。它能够帮助用户深入了解目标主机上的 UDP 服务和可能存在的安全风险,提高网络安全性和网络维护效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值