我想写一个可以跟有公IP连接的聊天程序,用普通的局域网聊天程序是不行的,因为局域网里都有一个唯一的IP,比较简单,客户程序发送信息往指定IP发就可以了,服务程序收到信息后,也就收到了客户程序的IP地址,然后往这个地址回发信息就可以了;但是在互联网上就不同了,如果客户机在内网里,通过网关代理出去的,那么发送到服务IP端信息后,服务器收到的,只是网关的公IP,对服务器来说要对内网客户程序如何把信息成功发给它呢,如果只是向客户机的网关回发信息,那么它内里的客户程序就不一客收到,因为内网不只一台电脑,要成功寻找这台正确内网客户机呢,
局域的编程技术,拿到互联网上有大大的不同啊

解决方案 »

  1.   

    信息发送到网关以后,区分局域网内不同的机器应该是IP:Port吧
      

  2.   

    无论是用TCP做的C/S模式的聊天程序还是用UDP做直连都必须有一台主机是在公网能直接访问到的(即不在NAT下)
    最简单的方法就是利用这台主机(充当服务器)转发.这样是最可靠的,但效率低,如果连接多了肯定会死慢.
    再都就是用UDP hole punching技术进行NAT穿通.比较麻烦.QQ用的好像就是这种.
    我在学校时用第一种方法做了一个仿QQ的聊天工具(功能上仿,但技术不一样人家用的是第二种),不过只能发文字.
    这个程序就是在局域网里做的,拿到公网一样用.
    等你明白NAT技术后就不会说局域网编程和公网完全不一样了,只是有些在公网上必须要的处理而在局域网里没必要用就能使用.可能你说的局域网是那种最简单的局域网,要是一个大的局域网(分多级的)操作起来和在公网是一样的.