今天实现的这个服务器程序加入了对多个客户端同时请求处理的实现,服务器端通过对每次监听到的客户端程序新建一个子进程,进行相关的处理,将从客户端传来的字符串数据,转化为大写的字符串序列,然重新写回到connfd;另一方面,客户端通过在标准输入里获取客户输入到的字符串序列,传送到con ...
今天实现的这个服务器程序加入了对多个客户端同时请求处理的实现,服务器端通过对每次监听到的客户端程序新建一个子进程,进行相关的处理,将从客户端传来的字符串数据,转化为大写的字符串序列,然重新写回到connfd;另一方面,客户端通过在标准输入里获取客户输入到的字符串序列,传送到connfd,再从connfd读取经服务器处理过的字符串序列打印到标准输出上。
同时,加上了对某些socket原语函数的封装处理,主要封装了对出错的处理机制,基本原语函数都以相应大写首个字符的命名表示,定义在“wrap.c”和“wrap.h”文件中。
wrap.h
1 /* wrap.h */ 2 #ifndef __WRAP_H_ 3 #define __WRAP_H_ 4 5 void perr_exit(const char *s); 6 int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr); 7 void Bind(int fd, const struct sockaddr *sa, socklen_t salen); 8 void Connect(int fd, const struct sockaddr *sa, socklen_t salen); 9 void Listen(int fd, int backlog); 10 int Socket(int family, int type, int protocol); 11 ssize_t Read(int fd, void *ptr, size_t nbytes); 12 ssize_t Write(int fd, const void *ptr, size_t nbytes); 13 void Close(int fd); 14 ssize_t Readn(int fd, void *vptr, size_t n); 15 ssize_t Writen(int fd, const void *vptr, size_t n); 16 static ssize_t my_read(int fd, char *ptr); 17 ssize_t Readline(int fd, void *vptr, size_t maxlen); 18 19 #endif
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:多进程服务器Demo
关键词:进程
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。