当前位置: 技术问答>linux和unix
关于linux下一个通讯程序的问题
来源: 互联网 发布时间:2016-06-04
本文导语: 学了一段网络编程想做个聊天用的小程序 思想大概如下 有两个客户端 一个服务器,客户端在登录时,服务器将两个客户端的ip地址和端口号记录下来,分别发送给另一方, 然后这两个客户端分别使用这个从服务器...
学了一段网络编程想做个聊天用的小程序
思想大概如下
有两个客户端 一个服务器,客户端在登录时,服务器将两个客户端的ip地址和端口号记录下来,分别发送给另一方,
然后这两个客户端分别使用这个从服务器获得的ip地址和端口号来通过udp直接发送和接受udp包,请问这样行的通吗,
就是想模仿一下qq两个人聊天的功能,如果这样行不通的话,该怎么办呢
思想大概如下
有两个客户端 一个服务器,客户端在登录时,服务器将两个客户端的ip地址和端口号记录下来,分别发送给另一方,
然后这两个客户端分别使用这个从服务器获得的ip地址和端口号来通过udp直接发送和接受udp包,请问这样行的通吗,
就是想模仿一下qq两个人聊天的功能,如果这样行不通的话,该怎么办呢
|
你也要这么做,也可以。
服务器维护好2边的ip和端口信息。也就是说2边分别跟服务器建立一段连接。
而跟服务器通信完毕后,一边客户就额外建立一个端口监听,(这个端口就是服务器维护的信息),然后另一个客户端从服务器获取端口,再额外建立一个 client来连接这个端口。
也就是说,你这样2边各要建立2个端口连接。
|
貌似那样的话,一般是没法通过 nat 和 fw ...
|
不知道qq软件的原理是不是这样的。感觉应该可以。
每个客户端,都各自有自己的监听程序。因为不知道对方客户端的IP,所以第一次只能通过服务端转发到另一客户端。而之后,两个客户端之间就可以建立通讯了。
每个客户端,都各自有自己的监听程序。因为不知道对方客户端的IP,所以第一次只能通过服务端转发到另一客户端。而之后,两个客户端之间就可以建立通讯了。
|
如果你不想额外建立连接,纯粹由服务器转发,也可以,不过服务器的负担蛮大的