ICMP "Port Unreachable" message是一个什么错误,不知道有没有高手碰到过

时间:2022-07-04 20:54:33
我创建了一个UDP的socket,用sendto成功后再用WSARecvFrom接收结果出现WSAECONNRESET错误,MSDN解释说是上一个sendto导致了一个ICMP "Port Unreachable" message,不知道这是一个什么错误,如何避免呢,各位高手能不能帮帮忙啊

18 个解决方案

#1


向对方发送没有问题,对方可以收到,应该不是端口不存在的问题

#2


up

#3


你发送udp包,但是对方的端口没有打开,导致错误,这时会用icmp返回一个端口不可达的错误,这就是你所说的Port Unreachable

#4


来迟了,同意楼上,端口不可到达是一种icmp包

#5


icmp的一个通知啊!端口不可达

#6


可是对方收到了数据呀,我发送的对方是一个广播地址,会不会是广播地址的原因?而且这个错误时有时无,简直要把人搞晕了

#7


sendto成功了吗?
如果sendto失败,那就不会接受到数据的。
你最好在sendto那里判断一下返回值。

#8


你在广播UDP报文,这个UDP报文就会发送给广播域里的所有主机。但是在广播域里面有某台主机没有开打你所要发送的那个UDP端口,所以UDP协议栈就返回一个端口不可达的ICMP差错报文。

忽略它OK了。
TCP/IP协议标准就是这样规定的,不是某位高手能改变的。

#9


同意 footway(靠边行走),是丫,如果是广播地址,就可能有某个主机的相应端口没有打开,从而导致该主机向源主机发送icmp端口不可达。

#10


可是向组播地址发送完后接收就会出现WSAECONNRESET,不能再接收数据了

#11


不在接收是什么现象。只要socket是打开的就可以接收。

#12


端口无法到达!

#13


该socket还可以发送,但是不能接收了。我把多播该的SIO_MULTIPOINT_LOOPBACK改为FALSE好像就没事了,真是奇怪

#14


对方主机上没有相应的程序接收那个端口的数据.
因此 ICMP 模块就给源主机发送一个错误报告.

ICMP 协议为 IP 层的一个协议, 网际控制消息协议, 负责处理通信中的错误,性能检测等.

#15


混分

#16


同意楼上

#17


U D P的规则之一是,如果收到一份U D P数据报而目的端口与某个正在使用的进程不相符,
那么U D P返回一个I C M P不可达报文

#18


up!

#1


向对方发送没有问题,对方可以收到,应该不是端口不存在的问题

#2


up

#3


你发送udp包,但是对方的端口没有打开,导致错误,这时会用icmp返回一个端口不可达的错误,这就是你所说的Port Unreachable

#4


来迟了,同意楼上,端口不可到达是一种icmp包

#5


icmp的一个通知啊!端口不可达

#6


可是对方收到了数据呀,我发送的对方是一个广播地址,会不会是广播地址的原因?而且这个错误时有时无,简直要把人搞晕了

#7


sendto成功了吗?
如果sendto失败,那就不会接受到数据的。
你最好在sendto那里判断一下返回值。

#8


你在广播UDP报文,这个UDP报文就会发送给广播域里的所有主机。但是在广播域里面有某台主机没有开打你所要发送的那个UDP端口,所以UDP协议栈就返回一个端口不可达的ICMP差错报文。

忽略它OK了。
TCP/IP协议标准就是这样规定的,不是某位高手能改变的。

#9


同意 footway(靠边行走),是丫,如果是广播地址,就可能有某个主机的相应端口没有打开,从而导致该主机向源主机发送icmp端口不可达。

#10


可是向组播地址发送完后接收就会出现WSAECONNRESET,不能再接收数据了

#11


不在接收是什么现象。只要socket是打开的就可以接收。

#12


端口无法到达!

#13


该socket还可以发送,但是不能接收了。我把多播该的SIO_MULTIPOINT_LOOPBACK改为FALSE好像就没事了,真是奇怪

#14


对方主机上没有相应的程序接收那个端口的数据.
因此 ICMP 模块就给源主机发送一个错误报告.

ICMP 协议为 IP 层的一个协议, 网际控制消息协议, 负责处理通信中的错误,性能检测等.

#15


混分

#16


同意楼上

#17


U D P的规则之一是,如果收到一份U D P数据报而目的端口与某个正在使用的进程不相符,
那么U D P返回一个I C M P不可达报文

#18


up!