其实我就是想实现一个非常简单的功能。
服务器:公网固定IP
客户端:有可能是工作在路由环境下,有可能工作在有外网IP的环境下。只要求客户能发送并接收服务器的文本信息和服务器接收并发送给客户端信息。
我在盒子上找了所有p2p的软件,经过实验都不成功。
环境是:一个用CDMA拨号的机子做服务器。另一个机子运行于内网。经过测试都是不成功的。我个人的理解是,不管局域网工作方式是怎么样的,首先客户机一定是能够连接得到路由的。当客户机发送信息到服务器时,路由器会产生一个临时的NAT转换表,并将客户机的信息发送出去。而服务器收到信息后,也以为是路由器的某个端口发送的,当服务器返回信息给客户机时。路由器又根据临时NAT转换表,把信息发送到客户机的某个端口。
我上面这么讲的过程有错吗?
其实,我就是想知道用什么最简单的方法来实现:1.客户端只要能上网,不管是什么环境的,就可以和服务器通信.
2.服务器拥有一个固定外网IP,可以发送信息给客户机.
我的想法是:用UDP.
客户端不断的发送数据给服务器,服务器也不断的发给客户端(比如3秒一次).这样子即可以通信,也可以知道有没有断线.但是无论是我看indy demo,还是看盒子的源码都只能在局域网内通信......实在是痛苦.有没有好心人提供点资料,猛料什么的,我不想成为什么高手,讲不要简单的回答"去看winsock"  "IDNY demo"  等无用的回
答..谢谢..
我相信很多新手们为了这个问题都爆头了..
最后:
这样子的通信要用到P2P,打洞有关系吗?还有,一定要P2P吗?然道不是直接把要送达的IP告诉windows,然后windows告诉路由,路由再到INTERNET上去找这么简单的吗?

解决方案 »

  1.   

    1.不知道你用的是什么进行通信的,我一般用的是IdTcpServer
    2.如果你有公网IP服务器的话,是一定能够连上的
    3.你上面的思路严格的说不是真正的P2P,应该是PSP才对,那样的话也是可以的,因为客户都可以连上,即通过服务端转发数据,不过这样有个缺点,如果客户端比较多的话,对服务器的配置要求比较高
    4.当客户连上服务器后,在服务器端显示的才是真正的客户IP和端口,客户要使用这个IP和端口才能和另一个客户相连
      

  2.   

    理论上说应该是你说的那样的吧.服务器只要有公网ip,就可以连接的上,qq就是最好的例子"服务器:公网固定IP "
    你用cdma拨号,ip是不固定的,每次拨号都会分配到不同的ip
      

  3.   

    CDMA拨号只是拿来做测试的,可是真的不行噢.
    包括使用INDY DEMO的CHAT试也不行.
    我在网上查了一下,不只我一个人会这样的.是不是要注意些什么东西?