windows socket怎样实现一个客户端连接多个服务器端

windows socket怎样实现一个客户端连接多个服务器端,第1张

TCP:有几个服务端,就建立几个连接

多个连接的通信可以采用多线程或者select函数来处理

UDP:不需要建立连接,直接用sendto发送和readfrom接收

服务器端在指定端口侦听,这个实例对连接请求使用新的套接字响应。而客户端则无需特别的代码。

具体做法可参考下面的内容:

在服务端放一个winsock控件name属性设置为sock,设置它的index属性为0

在表单的Initialize事件中开始侦听:

sock(0)LocalPort = 2012

sock(0)Listen

在sock的ConnectionRequest事件编写代码:

Dim iSock As Integer

'寻找是否有空闲的套接字

For iSock = 1 To sockUBound

'找到第一个后即可结束循环

If sock(iSock)State = 0 Then Exit For

Next

'如果没有空闲的套接字,建立一个新的(新建的就是空闲的)

If iSock > sockUBound Then Load sock(iSock)

'响应连接请求

sock(iSock)Accept requestID

其它事件的代码按实际需要编写,与客户端没有什么区别。

上面这部分代码,就是让sock(0)在指定的端口进行侦听,然后,如果有客户端在这个端口请求连接,那么,sock(0)就会产生一个ConnectionRequest事件,这时,并不去用sock(0)去响应连接,而是建立一个新的sock,如sock(1),sock(2)并用它们的Accept去与客户端的socket交互,而sock(0)继续在原有的端口上进行着侦听。

这样,就可以在同一个端口上接入多个客户端,这就是服务器侦听模式的简单应用例子了。

建立多个线程就ok了 为每一个连接 创建一个线程去处理

while (true)

{

// 得到包含客户端信息的套接字

Socket client = serverAccept();

//创建消息服务线程对象

ClientThread newclient = new ClientThread(client);

//把ClientThread 类的ClientService方法委托给线程

Thread newthread = new Thread(new ThreadStart(newclientClientService));

// 启动消息服务线程

newthreadStart();

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » windows socket怎样实现一个客户端连接多个服务器端

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情