一个关于两台主机之间通信的问题

    两台主机之间如何实现通信?  我举个简单的例子。比如说QQ,一个人在上海,一个在深圳,两个人同时登录上QQ,然后就可以相互通信了。如果说我自己编写了一个简易版的聊天工具,我把我的java源码发给我的朋友,然后他把我给他发的源码运行了,我们就可以实现通信了么?   有关于这方面的   真的不懂   希望大神赐教。  还有一个问题,比如说我写了一个程序,在eclipse上运行是这个样子:![图片说明](https://img-ask.csdn.net/upload/201601/11/1452527035_104131.png) ![图片说明](https://img-ask.csdn.net/upload/201601/11/1452527080_65642.png)   
    上面两张分别是客户端和服务端的页面,   我是需要封转成什么页面,还是怎么办,发给我朋友以后,他打开就是这个样子,然后注册一个号码,我这边也打开了,就可以实现通信了?    
    可能我表达的也不是很清楚。大家可以加我QQ:921127639  我们私聊,然后可能能交流的更清楚一些,谢谢各位了

你需要有一个公网上的服务器,两边都是内网没有办法通讯。
你可以租用一个阿里云服务器,几十块钱一个月。把你的服务器放上面就可以了。
你的客户端都和它建立连接,然后服务器负责把这边的消息转发给那个人。

楼上说的对需要一个公网上的服务器,如果两人都在公网就可以,在一个内网上可以,在两个内网上就不行,还有一个折中的方法是使用端口映射等