解决方案 »

  1.   

    如果是刚开始设计通讯方面程序,那么你使用服务器转发这一种形式也就够了。假设客户端跟服务器是长连接双工通讯的,那么你的通讯信令就应该可以区分是客户端到服务器还是从服务器到客户端的消息(例如使用id号>0和<0作为区分),服务器可以随时向客户端发送消息。当一个客户端发送消息给服务器,服务器判断这只是一个“路由消息”,于是它找到对方所在的Client通道,然后发送出去就行了,服务器处理这种动作不需要耗费基本毫秒的时间,也很快。
      

  2.   

    给楼主几个链接,看了 就很清晰明了了
    http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html
      

  3.   

    你需要使用Socket打开一个链接的通道进行传输
      

  4.   

    两个都在内网的主机需要通讯:1.先打洞
    2.如果做测试,可以在接收方的nat中做一个映射
      比如把接收方所在内网路由器上的一个公网端口 映射到 内网中的接收主机
      
     接收方公网IP  222.30.64.111  端口55555  设置映射  内网IP 192.168.1.100 内网端口 55556那么你所有发送给 222.30.64.111:55555 的数据包  全部会转给  内网中 192.168.1.100:55556
    至于发送方  不需要做处理  这个跟实际网络结构有关  不一定每次设置都会有效的
      
      

  5.   

    NAT打洞,适用于两端都是在内网的情况。因为第一次发送通讯请求,目标必须在公网上,所以通常来说,两端都在内网谁也无法发起连接,更不要说通讯了。NAT打洞就是依赖一台服务器作为中转,让一个客户端和这个服务器通讯,另一个客户端通过实现和这个服务器建立的连接获得前一个客户端的端口、IP,然后服务器把控制权交给客户端,使得两个内网的客户端不再需要服务器中转就能直接通讯。
      

  6.   

    光有IP和端口还是不行的,你需要一种传输层的协议。通常来说有TCP和UDP两种协议。对于TCP协议,需要三次握手的过程,你结合教材自己先了解下。再在网上找例子程序看。
      

  7.   

    各位大神,我把两台电脑,其中一台通过路由器映射了,也就成为了所为的服务器了,另一台也就是处在内网的,也就是我们平时一般人的电脑,也就是客户端了,那么客户端是可以向服务器发送消息,而且我通过编程发现,客户发来的消息的IP就是它外网的IP,但是端口每次都在改变,我服务器回发给那个IP和端口,结果客户端没收到消息,怎么回事?
    我服务器该如何回复消息,如何准确的发给这个处在外网的机器,还请详细点
      

  8.   

    请问问题解决了没? 求源代码。谢谢!
    [email protected]