没有合适的资源?快使用搜索试试~ 我知道了~
TCP是一种面向连接的通信方式,一个TCP服务器难免会遇到同时处理多个用户的连接请求的问题,本文用一个简化的实例说明如何在一个TCP服务器程序中,使用select处理同时出现的多个客户连接,文章给出了程序源代码,阅读本文需要熟悉基本的socket编程知识,熟悉基本的服务器/客户端模型架构;本文对网络编程的初学者难度不大。
资源推荐
资源详情
资源评论





















TCP
服
务
器
如
何使
⽤
select
处
理
多
客
⼾
连
接
---- written by whowin
TCP
是
⼀
种
⾯
向
连
接
的
通
信
⽅
式
,
⼀个
TCP
服
务
器
难
免
会
遇
到
同
时
处
理
多
个
⽤
⼾
的
连
接
请
求
的
问
题
,
本
⽂
⽤
⼀
个
简
化
的
实
例
说
明
如
何
在
⼀个
TCP
服
务
器
程
序
中
,
使
⽤
select
处
理
同
时
出
现
的
多
个
客
⼾
连
接
,
⽂
章
给
出
了
程
序
源
代
码
,
本
⽂
假
定
读
者
已
经
具
备
了
基
本
的
socket
编
程
知
识
,
熟
悉
基
本
的
服
务
器
/
客
⼾
端
模
型
架
构
。
1.
基
本
思
路
TCP
服
务
器
端
程
序
,
对
于
每
⼀个
连
接
请
求
,
可
以
使
⽤
多
线
程
的
⽅
式
为
每
⼀个
连
接
启
动
⼀个
线
程
处
理
该
连
接
的
通
信
,
但
使
⽤
多
线
程
的
⽅
式
,
通
常
认
为
有
如
下
缺
点
:
1.
多
线
程
编
程
和
调
试
相
对
都
⽐
较
难
,
⽽
且
有
时
会
出
现
⽆
法
预
知
的
问
题
;
2.
上下
⽂
切
换
的
开
销
较
⼤
;
3.
对
于
巨
⼤
量
的
连
接
,
可
扩
展
性
不
⾜
;
4.
可
能
发
⽣
死
锁
。
使
⽤
select
处
理
多
连
接
的
基
本
思
路
1.
建
⽴
⼀个
⽤
于
侦
听
的
socket
,
叫
做
master_socket
;
2.
建
⽴
⼀个
sockets
数
组
,
⽤
于
存
储
已
经
与
master_socket
建
⽴
连
接
的
socket
,
叫
做
client_socket
,
初
始
化
时
全
部
清
0
,
数
组
的
⻓
度
即
为
程
序
允
许
的
最
⼤
连
接
数
;
3.
绑
定
服
务
器
地址
并
在
master_socket
上
启
动
侦
听
;
4.
在
master_socket
上
侦
听
5.
将
master_socket
、
client_socket
中不为
0
的
项
加
⼊
到
readfds
中
,
启
动
select
;
int master_socket = socket(AF_INET , SOCK_STREAM , 0);
#define MAX_CLIENTS 30
int client_socket[MAX_CLIENTS];
int i;
for (i = 0; i < MAX_CLIENTS; i++) {
client_socket[i] = 0;
}
#define PORT 8888
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
bind(master_socket, (struct sockaddr *)&address, sizeof(address));
listen(master_socket, 3);
TCP
服
务
器
如
何使
⽤
select
处
理
多
客
⼾
连
接
- written by whowin
1 / 5
资源评论


whowin
- 粉丝: 16
- 资源: 13
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
