以下说的都试udp协议:我有一个程序A运行于一个具有公网ip的pcA上并监听一个端口。另一个B程序运行于另一个电脑上。B与A能正常通信。我领有一个C运行在单片机上,他通过gprs上网,此时C于A通信常出现这个现象:C往A发送数据正常,A往C发送数据,C却收不到。大概什么原因,大侠指导一下吖。。谢

解决方案 »

  1.   

    因为GPRS上网时,客户端的IP是虚拟局域网的IP(好比是192。168。1。1这样的),
    它是通过NAT出去的,服务器无法知道客户端的地址端口,当然不行啦。服务器要访问客户端的话,可以这样:
    客户端主动连接服务器,服务器记录连接的地址和端口(其实是网关的地址和端口),以后往这个地址和端口发送数据,这中间网关充当了自动转换的脚色,客户端就能收到了。
      

  2.   

    上面说的是UDP的过程,TCP更简单,只需要客户端主动连接就可以了。
      

  3.   

    我用GPRS上网已经4个多月了,据我估计,因为GPRS要通过移动的网关才能访问网络,所以客户端(C)发往服务器A,当然可以,通过网关发出去。像楼上所说他处于NAT内。但是服务器A想要通过移动的网关访问客户端C,是不太可能的。用什么方法来解决,我也不清楚。
      

  4.   

    gprs网用的是 对称NAT.