代码开源(6)——UNIX并发编程

这篇博客介绍了在UNIX环境下,如何通过多进程、IO多路复用和多线程来实现并发编程,以解决单个连接限制的问题。文章以《深入理解计算机系统》为参考,提供了简化版的代码示例,强调了在多进程方案中父进程关闭连接描述符以避免内存泄露,以及在多线程版本中动态分配连接描述符空间以防止数据竞争。
摘要由CSDN通过智能技术生成

       之前在代码开源(3)——UNIX中CS简单实现 给出的代码,存在一个问题,那就是只支持单个连接。本文整理给出了三种方法:多进程、IO多路复用、多线程,主要参考《深入理解计算机系统》一书。对源码做了修改整理,加了些批注。下面一一给出,只修改服务器端的主程序,客户端代码不变。其中用到的rio在代码开源(2)——UNIX 健壮I/O函数 已给出。

       首先给出原先的版本,即不支持多个连接。为了突出重点,做了些简化,比如去掉了一些异常的判断(accept调用失败,select调用失败等),实际编写中应该加上这些判断。

#include "server.h"

int main(int argc, char **argv)
{
	int listenfd, connfd;
	unsigned int clientlen;         //地址长度
	struct sockaddr_in clientaddr;  //客户端地址

	if(argc != 2)                   //参数必须是2个
	{
		fprintf(stderr, "usage: %s <port>\n",argv[0]);
		r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值