我正在写一个 类似qq的聊天工具。
现在有一个想法。请大家看看问题所在:

当CLIENT启动连到SERVER 时。 它向 SERVER 发送自己的 ID 号 和 IP 。
SERVER 把它的 ID 和 IP 关联起来存在连表中 
这样个每个上线的用户都在SERVER保存有他们的 ID 和 IP 
当其中一用户A在他的CLIENT 点激 用户B 的头象 
如果是 A B 首次通信 
A 的CLIENT 便把 B 的 ID 发到 SERVER 
SERVER 通过他的连表得到与这个 ID 关联的 IP 并把 IP 发给 CLIENT A
CLIENT A 有了 CLIENT B 的 IP 后 就向 CLIENT B 发送连接请求
( 每个CLIENT 都有个 监听SOCKET )然后 A B 就建立起连接 
他们的数据就 直接传送 而 不需要经过 SERVER

解决方案 »

  1.   

    但是 对于内网 IP 的机 
    这里好象有问题了
    象我们寝室的机器对外的IP 都是 我们饿网关的 IP
      

  2.   

    如果CLINET是通过NAT上网的话,就不这么简单了。如果不是传送文件,而是只发关文体的话,最好通过SERVER转发,这样好一些。
      

  3.   

    点对点 对于 固定ip当然可以
    对于内网ip 还须对方 网关的帮助
    你可以这样 
    先让他尝试点对点。
    再让他通过服务器转发。。
      

  4.   

    每个CLIENT 都有个 监听SOCKET
    ----------------------------
    出发点就错了~~这种模式的通讯通常都是采用的udp协议~~这样才可能做到跨网关~~