首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于端口不太明白,WinSock服务端的控件数组中,怎样才能得到实际与客户端通讯的端口号码?解决方案

2012-01-30 
关于端口不太明白,WinSock服务端的控件数组中,怎样才能得到实际与客户端通讯的端口号码?服务端的设定是:tc

关于端口不太明白,WinSock服务端的控件数组中,怎样才能得到实际与客户端通讯的端口号码?
服务端的设定是:
        tcpServer(0).LocalPort   =   1288                       '用于侦听的本地端口
        tcpServer(0).Protocol   =   sckTCPProtocol     '使用TCP协议
        tcpServer(0).Listen                                           '创建   WinSock   套接字,设置为侦听模式

当客户端来连接时,触发服务端的   ConnectionRequest   事件,动态加载新的   WinSock   控件,实际与客户端通讯的是这个新加载的   WinSock。

        If   tcpServer(N).State   <>   sckClosed   Then   tcpServer(N).Close

        With   tcpServer(N)
                .LocalPort   =   0               '设定使用的本地端口(动态随机端口号)
                .Protocol   =   sckTCPProtocol       '使用TCP协议
                .Accept   requestID         '接受具有   requestID   参数的连接,完成连接
        End   With

问题:
1、对于客户端来所,虽然实际通讯的是服务端新加载的控件数组(端口被自动设定),但访问的是   tcpServer(0)   用于侦听的端口1288。所以客户端的   RemotePort   属性只能返回   1288,不能返回实际通讯的   tcpServer(N)   的   LocalPort。
      tcpServer(0)   的端口只听不发。
      这么理解没错吧?
      那么我怎么才能得到服务端进行实际通讯的端口号呢?也就是   tcpServer(N)   的   LocalPort   属性?  

2、一个客户端和服务端连接就会占用服务端的一个端口吗?
      那么同时1千人、1万人通过客户端连接服务端,服务端就会同时打开1千、1万个端口吧?接收发送的时候,服务端不会传太“串台”吧?

3、同时加载了1万个   WinSock   控件,同时打开1万个端口,对服务器的性能会有多大影响啊?

谢谢!



[解决办法]
哈哈,服务器Sockte数组用的是同一个监听端口,同一个端口可以同时连接多个客户端.你的tcpServer(N).LocalPort = tcpServer(0).LocalPort ,是正常的.
[解决办法]
赫赫 其实tcp他只是使用一个端口的 他是有连接的 具体的处理 交给操作系统
[解决办法]
每个winsock(i)在Accept requestID之后,才算完成连接,才会给客户端发送一个localport,客户端得到的就是这个PORT,而不是sersock(0)的1288.
所以不会串台。
至于具体的连接数,看你的服务器配置和要完成多少任务了。
ok?

热点排行