要开始聊天了,有一些乱,有人建议登陆后再开一个新的线程,老的线程用来和已登陆用户保持通信,新的线程去等待新用户。
没用用户登录的情况下,在cmd下运行netstat -a 看端口使用情况
会看到有两个TCP的 连接
2.登录一个用户,多了一个连接
再登陆一个用户,并没有再加。
网上的一个图
这说明,同一进程下的多个线程是可以共用一个端口的。系统会为同一端口下的线程编号。有个服务端程序,它主线程检测是否有客户端连接请求,一旦检测到请求就交给另一个线程去处理。主线程继续去检测连接。而主线程之外的每个线程都是使用的同一个端。