上篇文章简单的介绍了一下Linux下套接字通信的相关知识:
http://blog.csdn.net/qq_29503203/article/details/60961537
但是存在一个缺陷就是只能进行单进程通信,我们都知道实际上不可能一个服务器一次只能有一个客户端,所以在这里对其进行一个改进。
多进程套接字TCP通信
我们通过fork出子进程去完成客户端发来的请求,而父进程只需用去accpet连接请求。这里还需注意的是:既然创建出子进程,那么就得考虑它的回收。先前学习回收子进程的方法很多,比如:通过发信号,通过函数(一般是父进程对子进程的一个等待)
今天将介绍一种新的方式,即在子进程中继续创建子进程,然后通过init系统对其进行回收,下来看着代码继续详说
server.c
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<arpa/inet.h>
int startup(int _port,const char* _ip)
{
int sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0)
{
perror("socket");
exit(1);
}
int opt=1;
if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt))<0)
{
perror("