我使用的是一个典型的Clint-Server模型,客户端和服务端的连接使用的是Indy的TIdTCPClient和TIdTCPServer控件。
问题1:有人说服务端在监听的时候,每收到一个客户端连接,就会使用一个新的port来与之通信。那么如果客户端太多,会不会把可用的port用完呢?-_-@
问题2:一台客户端电脑上能用多个TIdTCPClient(比如同时运行多个程序或一个程序中的多个form都使用TIdTCPClient进行连接)连接同一个服务器的TIdTCPServer吗?如果可以,服务端的TIdTCPServer怎么分辩来自同一个IP和Port的多个客户连接呢?如果不行,QQ这类软件在一台机器上可以打开多个又是怎样实现的呢?
问题3:我的老版社区积分还有不少,可是新版社区积分就很少了(而且好像不能通过登录来增加),那大家发贴还给那么多分吗?
问题1:有人说服务端在监听的时候,每收到一个客户端连接,就会使用一个新的port来与之通信。那么如果客户端太多,会不会把可用的port用完呢?-_-@
问题2:一台客户端电脑上能用多个TIdTCPClient(比如同时运行多个程序或一个程序中的多个form都使用TIdTCPClient进行连接)连接同一个服务器的TIdTCPServer吗?如果可以,服务端的TIdTCPServer怎么分辩来自同一个IP和Port的多个客户连接呢?如果不行,QQ这类软件在一台机器上可以打开多个又是怎样实现的呢?
问题3:我的老版社区积分还有不少,可是新版社区积分就很少了(而且好像不能通过登录来增加),那大家发贴还给那么多分吗?
2,服务上的port是不变的,没有链接上了,会生成一个新的socket,你记下socket就行了,只有客户端的ip和port是不同,服务器是不会变的
那么,对于服务端而言,ns与s具有的相同的属性是那些方面呢?ip和port都相同吗?如果都相同,windows怎么区分ns和s呢?对于客户端而言,它不必关心使用什么样的本机地址。那么是不是在连接的时候,由操作系统给每一个连接随机分配一个未使用的port呢?to newyj: 呵呵,我知道该如何转换可用分了,谢谢!
2.Client与Server建立连接时,操作系统会随机选择一个本地的未使用端口与Server端建立连接。
所以在Server端用IP:Port就可以识别一个Client,IP:Port就是一个唯一的Socket。