c/s结构使用UDP协议,在客户端使用CONNECT(),如果我的服务器有
两张网卡,设置三个IP,其中一个是对内局域网使用,另外两个有不同的用处,
现在,客户端使用UDP协议的connect()方式,发送数据给服务器,服务器可以收到,
但是,当服务器用SENDTO()方式发送数据给客户端的时候,没有错误(发送的字符数
和给定的一样),但是,客户端无法接收到任何信息,同样的程序,我用拨号上网的方式,
发送接受没有问题,但是测试的时候是一张网卡,两个IP)
问题出自那里?会不会是路由器的问题,
因为服务器是托管到其他地方,所以没办法实地测试,但我了解到路由器没有配置ICMP。
会不会是出自这里?
两张网卡,设置三个IP,其中一个是对内局域网使用,另外两个有不同的用处,
现在,客户端使用UDP协议的connect()方式,发送数据给服务器,服务器可以收到,
但是,当服务器用SENDTO()方式发送数据给客户端的时候,没有错误(发送的字符数
和给定的一样),但是,客户端无法接收到任何信息,同样的程序,我用拨号上网的方式,
发送接受没有问题,但是测试的时候是一张网卡,两个IP)
问题出自那里?会不会是路由器的问题,
因为服务器是托管到其他地方,所以没办法实地测试,但我了解到路由器没有配置ICMP。
会不会是出自这里?
http://www.csdn.net/expert/topic/1046/1046492.xml?temp=6.916445E-02
关注UP 有分!
我在客户端已经使用了connect和sendto
发送 到指定的一个IP(两个IP中的一个)。
没有必要在两个IP上同时绑定了吧,关键是不是在路由上?
涉及到NAT的问题,server应该使用最近一次收到的client包的ip:port与client通讯。这个port可能不是固定的,跟具体的网关/路由有关系
客户端是在局域网,但是我用sendto和服务器通讯,
然后,服务器得到recvfrom得到数据和源IP,然后用SENDTO()发送,
这个过程应该没有问题吧。
拨号上网的形式应该比固定IP的形式难,
但是这里拨号能够通讯,但是在让被人托管的服务器(固定IP)的
时候就不能了。
最简单的办法,是在服务器上PING客户端,一试即知。但现在按你说的,没有办法到实地。
目前的办法就只有将客户端的机器IP分别换成与服务器的IP同在一个网段中进行监听,再看情况确定故障。另外如果你的客户端是Windows机器请注意你的广播地址是不是255.255.255.255,Windows只认这个。
我最近的一系列问题都是有关UDP协议的,开始的关键之处在于对网关和路由器方面的不了解。所以有些问题明明知道出在那里,但是不能够肯定而且又无法实地测试(托管的机房不允许随便进去测试),所以才求救于CSDN各位大虾,问题总算解决。由WAN向LAN发送数据的时候,经过路由器(或者网关之类的东西,我不知道为什么要这样,对于实际工作的障碍远远大于所谓的安全保障,到最后还不是被我绕过去了!呵呵!!!)的时候,会将我的数据报丢弃。多亏各位的提醒