比如局域网内有A,B两台主机,先让A,B这两台主机都连接服务器(UDP或TCP都可),接下来如果A要发信息给B,那么你可以先定义一个发信息的消息号,比如聊天消息号定义为001,那么你就在客户端中用UDP或TCP发消息给服务器的时候用"001|B主机客户端的号码|聊天内容"这种格式把这条消息发到服务器端.在服务器端的接收消息中先把这段字符串转换为字符串数组,然后取数组中的第1个元素即"001",判断如果为001的话那么则按照第二位的号码所对应的IP发送数组中第三位的元素即"聊天内容"给这个IP就行了!大概的原理就是这样的!

解决方案 »

  1.   

    楼上的大哥,B主机是在局域网内的,IP地址都是私有地址,一般都是通过网关出去的,如果是这样,我如何将消息发给B主机?
      

  2.   

    xu_2007所说的不是p2p打洞技术
    为了识别内网IP可一这样做,每个客户端一登陆,就向服务器发送自己登录的消息,服务器判断是登录消息,那么就记录你的用户名,你的IP,端口.当你要你给其他用户发送消息时,可以发给服务器接收人的用户名,服务器从已经登录的用户中查询,取其IP 和端口,把信息发出去,但这样会增加服器的负荷,如果信息量较大,建议你打洞