用的是SOCKET,connect(),recv(),send()等函数,不是CSoket。在同一个实验室内的不同主机上,在客户端填入服务端主机的IP地址,然后连接,可以通讯。但我将客户端软件传给别的城市的同... 用的是SOCKET, connect(),recv(),send()等函数,不是CSoket。
在同一个实验室内的不同主机上,在客户端填入服务端主机的IP地址,然后连接,可以通讯。但我将客户端软件传给别的城市的同学,让他与我进行连接,却无法连接成功。这是为什么呢?如果远程无法连接,那么QQ是如何实现的呢?难道用UDP就可以了吗?
那样肯定是不行的,在一个局域网内,每一个主机的ip都是固定并已知的。在不同的局域网之间进行数据通信需要路由或网关才可以,QQ实现好友通信是因为我们并不是直接与对方连接的,我们发给对方的数据需要通过腾讯公司的服务器转发给对方。如果你细心观察就会发现,你在与你的朋友进行QQ通信之前,需要先登录QQ,而这个时候其实是连接到腾讯公司的服务器上。当我们给好友发信息的时候,信息会先到达腾讯公司的服务器上,再从腾讯公司的服务器上转发到好友那里。如果没有腾讯公司的服务器做为桥梁,任何两个在不同的局域网里面的两个QQ是没法进行通信的。要了解这些,建议你去看一看TCP/ip协议的书籍。