明明是按照linux socket programming by example上的例子写的啊,server和client在一台机器上就没有问题,怎么一分开就木有反应了?dgramclnt应该是处于recvfrom阻塞的状态,server呢?大概没有收到?否则也不能如此绝情啊。
看到有人说udp也可以用connect的,面向连接的UDP,这样如果连接不上,kernel会返回错误给用户,而不是像无连接一样光是痴痴地等。在dgramclnt.c中connect到server, 运行之,有反应了!但仔细一看才发现是出错信息:No route to host. 果然验证了自己的猜想,client的消息果然没有被送到,不握手就是不行啊,送到送不到都不能确定。那为啥送不到呢?明明可以ping通,并且我还用ssh远程登录了那台电脑,网络没问题啊!困惑
继续搜索,尝试...
看到一个貌似靠谱的原因:防火墙!我原来都不知道Linux默认还开着防火墙,平时也接触不到。看来需要补补这方面的知识了。
使用service iptables stop 关闭服务器端机器的防火墙,连接测试,成功!成功收到来自大洋彼岸(实验室另一台电脑)发回的消息!
呦西,不错嘛~
阅读(1009) | 评论(0) | 转发(0) |