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

socket怎么使得多个客户端连接到一个服务器啊

2013-08-01 
socket怎样使得多个客户端连接到一个服务器啊?现在勉强实现到一个客户端连接到服务器可以传输字符串,但是

socket怎样使得多个客户端连接到一个服务器啊?
现在勉强实现到一个客户端连接到服务器可以传输字符串,但是现在要求我至少可以让50个客户端连接上服务器。每个客户端需要我新建一个SOCKET对应,我用了下SOCKET  soc[50]好像是不能这样用的,请问要怎么实现啊??刚刚学socket.还有能解释下socket传输数据的原理吗?为什么还需要有socketaddr_in这样的结构体存在,它是用来干嘛的? socket 服务器
[解决办法]
50个客户端,
一种方法是50个线程,每个线程1个socket对应相应的客户端。
或者用完成端口,那样只要几个线程就可以了。
[解决办法]
如果有Selector的 IO,不需要每个 Socket 都创建一个线程。
如果IO 是阻塞的,只好每个 Socket 都创建一个线程了。

不知道你用的是哪个库的 Socket,不同的库的 Socket 用法有细微差别。
[解决办法]
每个socket 开辟个线程
[解决办法]

引用:
Quote: 引用:

50个客户端,
一种方法是50个线程,每个线程1个socket对应相应的客户端。
或者用完成端口,那样只要几个线程就可以了。

五十个线程的怎么创建50个socket啊?完成端口能详细讲一下吗?

accept得到1个socket,在这个socket上就可以和相连接的客户端send和recv。
多个连接就是重复上述步骤。
send和recv有阻塞(同步)和非阻塞(异步)两种方式。
阻塞的socket通信需要单独的线程。
非阻塞的socket不需要单独的线程,但是处理起来比较复杂。有多种模式可以选择,有select模式、事件通知模式、重叠模式、完成端口等。

具体的还是去看网络编程的书吧。一下子说不清。
[解决办法]
就像服务器建立了50个通道,服务器利用这50个通道与客户端分别通信。
select或者线程都可以解决这个问题,不过要建立一个50个socket还真没遇到过。

热点排行