一、需求 把https://www.cnblogs.com/soldierback/p/10673345.html中的TCP回射服务器程序重写成使用select来处理任意个客户的单进程 程序,而不是为每个进程派生一个子进程 二、分析 (1)服务器有单个监听描述符 (2)服务器只维护一个读描述符集;假 ...
分类:
系统相关 时间:
2019-04-14 14:21:46
阅读次数:
185
模型如下: 服务器: 客户端: 这个模型下所有进程统一通过队列通信,队列的大小有限制,而且这些进程既从这个队列读又往这个队列写,操作时无序的,很容易造成队列满或者队列空,所以当进程数很多时容易发生阻塞。 可以改进为如下的模型: 每来一个客户端,就fork一个进程,让这个进程和客户端通信。 监控模型: ...
分类:
其他好文 时间:
2018-08-05 20:22:17
阅读次数:
156
一、概述 想要写一个完整的TCP客户-服务器程序例子,有下面功能的回射服务器 1.客户从标准输入读一行文本,写到服务器上; 2.服务器从网络输入读此行,并回射给客户; 3.客户读此回射行并写到标准输出。 此例子需要观察:正常运行时什么情况,客户和服务器都启动时什么情况,客户正常终止时什么情况, 如果 ...
分类:
其他好文 时间:
2018-02-11 19:54:09
阅读次数:
214
1、先看man手册 SYNOPSIS /* According to POSIX.1-2001 */ #include <sys/select.h> /* According to earlier standards */ #include <sys/time.h> #include <sys/ty ...
分类:
系统相关 时间:
2017-12-22 22:49:56
阅读次数:
277
chapter5 5.1 概述 5.2 TCP回射服务器程序:main函数 int main(int argc, char **argv) { int listenfd,connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in, cli ...
分类:
其他好文 时间:
2017-12-17 00:16:17
阅读次数:
172
#ifndef _MY_ERR_H_#define _MY_ERR_H_ #include <errno.h> /* for definition of errno */#include <stdarg.h> /* ISO C variable aruments */ static void err ...
分类:
其他好文 时间:
2017-09-16 17:25:03
阅读次数:
175
#include "unp.h"static int read_cnt;//刚开始可以置为一个负值(我的理解) static char *read_ptr; static char read_buf[MAXLINE]; static ssize_t my_read(int fd, char *ptr ...
分类:
其他好文 时间:
2017-09-16 17:09:10
阅读次数:
156
#include "unp.h"int main(int argc,char**argv){ int sockfd; struct sockaddr_in servaddr; if(argc != 2) err_quit("usage:tcpcli<IPaddress>"); sockfd = so ...
分类:
其他好文 时间:
2017-09-16 17:08:49
阅读次数:
205
在socket编程之并发回射服务器一文中,服务器采用多进程的方式实现并发,本文采用多线程的方式实现并发。 多线程相关API: pthread_join类似waitpid,用于等待一个线程的结束。 pthread_detach将线程状态变成detachable。 一个detachable线程终止后,它 ...
分类:
其他好文 时间:
2017-02-19 15:12:16
阅读次数:
223
本文将分为两个部分,第一部分具体实现一对并发回射服务器/客户程序( 看过前面那篇文章的这部分可不看 重复了 );第二部分为服务器添加僵尸子进程自动清理机制。 那么服务器具体怎么实现并发?怎么会有僵尸进程?僵尸进程又是什么?如何处理这些僵尸进程 ... 本文将为你一一解惑。 ...
分类:
系统相关 时间:
2017-01-29 13:13:38
阅读次数:
245