tcp的各版本服务器

这篇博客详细介绍了如何使用TCP协议实现不同版本的服务器,从最初的只能接受一个客户端的服务器,到通过多进程支持多个客户端连接,再到采用多线程方式来处理并发连接。主要内容包括socket()、bind()、listen()和accept()等关键函数的使用,并提供了相应的服务器和客户端代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tcp是面向连接的,全双工,字节流的一种协议
介绍需要用到的函数:
这里写图片描述
socket()打开一个网络通讯端口。成功返回一个文件描述符,表示该套接字,应用程序就可以在网络收发数据。出错返回-1.
因为我们是IPv4协议/tcp协议,第一个参数为AF_INET,表示IP, 第二个参数为SOCK_TREAM,表示tcp协议,第三个参数为0.忽略
这里写图片描述
因为是服务器,所以需要唯一的网络地址和端口号,以便客户端访问。bind()作用就是绑定一个固定的网络地址和端口号。成功返回0,失败-1.
这里写图片描述
监听状态,允许有backlog个客户端处于等待连接状态。如果接到更多的请求就忽略。成功返回0,失败-1.
这里写图片描述
三方握手成功后,服务器调用accept()接收连接。如果没有连接,就阻塞等待。

版本1:只能接收一个客户端访问服务器
server.c
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
编写客户端,连接服务器。
需要用connect()连接服务器。
这里写图片描述
client.c
这里写图片描述
这里写图片描述
用本地环回测试
这里写图片描述
版本2:多进程。可以实现多个客户端访问。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
客户端同上。
我用本地环回进行测试。结果如下:
这里写图片描述
大家可以用局域网进行网络验证。
版本3:多线程版本
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
客户端同上。
测试方法同上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值