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

flyingwxq 2004-07-20 09:42:59
我创建了一个UDP的socket,用sendto成功后再用WSARecvFrom接收结果出现WSAECONNRESET错误,MSDN解释说是上一个sendto导致了一个ICMP "Port Unreachable" message,不知道这是一个什么错误,如何避免呢,各位高手能不能帮帮忙啊
...全文
1703 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdy119 2004-10-25
  • 打赏
  • 举报
回复
up!
oyljerry 2004-10-12
  • 打赏
  • 举报
回复
U D P的规则之一是,如果收到一份U D P数据报而目的端口与某个正在使用的进程不相符,
那么U D P返回一个I C M P不可达报文
wwwsq 2004-10-12
  • 打赏
  • 举报
回复
同意楼上
nwpulipeng 2004-10-12
  • 打赏
  • 举报
回复
混分
mingbao 2004-10-12
  • 打赏
  • 举报
回复
对方主机上没有相应的程序接收那个端口的数据.
因此 ICMP 模块就给源主机发送一个错误报告.

ICMP 协议为 IP 层的一个协议, 网际控制消息协议, 负责处理通信中的错误,性能检测等.
flyingwxq 2004-07-27
  • 打赏
  • 举报
回复
该socket还可以发送,但是不能接收了。我把多播该的SIO_MULTIPOINT_LOOPBACK改为FALSE好像就没事了,真是奇怪
danielzhu 2004-07-25
  • 打赏
  • 举报
回复
端口无法到达!
footway 2004-07-25
  • 打赏
  • 举报
回复
不在接收是什么现象。只要socket是打开的就可以接收。
flyingwxq 2004-07-24
  • 打赏
  • 举报
回复
可是向组播地址发送完后接收就会出现WSAECONNRESET,不能再接收数据了
  • 打赏
  • 举报
回复
同意 footway(靠边行走),是丫,如果是广播地址,就可能有某个主机的相应端口没有打开,从而导致该主机向源主机发送icmp端口不可达。
txcn 2004-07-22
  • 打赏
  • 举报
回复
你发送udp包,但是对方的端口没有打开,导致错误,这时会用icmp返回一个端口不可达的错误,这就是你所说的Port Unreachable
sharkhuang 2004-07-22
  • 打赏
  • 举报
回复
icmp的一个通知啊!端口不可达
footway 2004-07-22
  • 打赏
  • 举报
回复
你在广播UDP报文,这个UDP报文就会发送给广播域里的所有主机。但是在广播域里面有某台主机没有开打你所要发送的那个UDP端口,所以UDP协议栈就返回一个端口不可达的ICMP差错报文。

忽略它OK了。
TCP/IP协议标准就是这样规定的,不是某位高手能改变的。
kevin_fly 2004-07-22
  • 打赏
  • 举报
回复
sendto成功了吗?
如果sendto失败,那就不会接受到数据的。
你最好在sendto那里判断一下返回值。
flyingwxq 2004-07-22
  • 打赏
  • 举报
回复
可是对方收到了数据呀,我发送的对方是一个广播地址,会不会是广播地址的原因?而且这个错误时有时无,简直要把人搞晕了
iorikingdom 2004-07-22
  • 打赏
  • 举报
回复
来迟了,同意楼上,端口不可到达是一种icmp包
lincoder666 2004-07-20
  • 打赏
  • 举报
回复
up
flyingwxq 2004-07-20
  • 打赏
  • 举报
回复
向对方发送没有问题,对方可以收到,应该不是端口不存在的问题

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧