⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function

📁 一个linux网络开发的示例
💻
字号:
int my_write(int fd,void *buffer,int length) { 	int bytes_left; 	int written_bytes; 	char *ptr; 	ptr=buffer; 	bytes_left=length; 	while(bytes_left>0) 	{ 		/* 开始写*/ 		written_bytes=write(fd,ptr,bytes_left); 		if(written_bytes<=0) /* 出错了 */ 		{ 			if(errno==EINTR) /* 中断错误 我们继续写 */ 				written_bytes=0; 			else /* 其他错误 没有办法,只好撤退了 */ 				return(-1); 		} 		bytes_left-=written_bytes; 		ptr+=written_bytes; /* 从剩下的地方继续写 */ 	} 		return(0); } int my_read(int fd,void *buffer,int length) { 	int bytes_left; 	int bytes_read; 	char *ptr; 	bytes_left=length; 	while(bytes_left>0) 	{ 		bytes_read=read(fd,ptr,bytes_read); 		if(bytes_read<0) 		{ 			if(errno==EINTR) 				bytes_read=0; 			else 				return(-1); 		} 		else if(bytes_read==0) 			break; 		bytes_left-=bytes_read; 		ptr+=bytes_read; 	} 		return(length-bytes_left); } /* 客户端向服务端写 */ struct my_struct my_struct_client; write(fd,(void *)&my_struct_client,sizeof(struct my_struct); /* 服务端的读 */ char buffer[sizeof(struct my_struct)]; struct *my_struct_server; read(fd,(void *)buffer,sizeof(struct my_struct)); my_struct_server=(struct my_struct *)buffer; /* select */int use_select(int *readfd,int n) { 	fd_set my_readfd; 	int maxfd; 	int i; 	maxfd=readfd[0]; 	for(i=1;i<n;i++) 		if(readfd[i]>maxfd) maxfd=readfd[i]; 	while(1) 	{ 		/* 将所有的文件描述符加入 */ 		FD_ZERO(&my_readfd); 		for(i=0;i<n;i++) 			FD_SET(readfd[i],*my_readfd); 		/* 进程阻塞 */ 		select(maxfd+1,& my_readfd,NULL,NULL,NULL); 		/* 有东西可以读了 */ 		for(i=0;i<n;i++) 			if(FD_ISSET(readfd[i],&my_readfd)) 			{ 				/* 原来是我可以读了 */ 				we_read(readfd[i]); 			} 	} } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -