这种情况该怎么办?

xujungood 2005-02-10 08:39:55
假设有一个用UDP实现的C/S程序,客户端用connect先连接服务端,如果服务端没有启动,那么服务器会发送PORTUNREACHABLE错误给客户端,然后linux内河会把ECONNREFUSED错误返回给用户套接口.然后客户端会从read中出错返回.

但是我刚才在linux虚拟机上给我的windows发送消息,发现当windows开了防火墙时,他并不发送ICMP 的PORTUNREACHABLE错误,结果使我运行在linux上的客户端进程阻塞在read中
,这种情况下该怎么办?只能用超时来处理吗?
...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gettext 2005-02-16
  • 打赏
  • 举报
回复
防火墙不回消息你还能有什么办法?
你可以把sock设成非阻塞方式如果你想你程序完全控制错误处理的话。
xujungood 2005-02-12
  • 打赏
  • 举报
回复
nodummy 2005-02-10
  • 打赏
  • 举报
回复
那就只有设置超时了……
xujungood 2005-02-10
  • 打赏
  • 举报
回复
udp有connect啊,只是和tcp的含义不一样.
如果要防火墙返回reject,那么要运行这个程序还得配置防火墙了啊,
nodummy 2005-02-10
  • 打赏
  • 举报
回复
UDP有connect吗?

你让Windows的防火墙返回一个reject看看,要么给你的read加个超时

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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