c语言多进程语言多进程tcp服务器示例服务器示例
主要介绍了c语言多进程tcp服务器示例,多进程socket,epoll实现IO复用,需要的朋友可以参考下
server.h
复制代码 代码如下:
#ifndef SERVER_H
#define SERVER_H
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <assert.h>
#include <sys/epoll.h>
#include <signal.h>
#include <fcntl.h>
#include "bussiness.h"
#define LISTENTQ 5
#define DEF_PORT 6000
#define MAX_EPOLL_SIZE 10
#define DEF_PROCESS_NUM 5
int create_tcpsvr(char *ip, int port);
void fill_sockaddr(struct sockaddr_in *addr,char *ip, int port);
void comm_to_client(int sockfd);
void epoll_business(int epollfd, int listenfd, struct epoll_event ev);
int init_epoll(int listenfd);
void create_process(int sockfd, int i);
#endif
server.c
复制代码 代码如下:
#include "server.h"
/*
* Create a TCP Server
* Return socketfd
*/
int create_tcpsvr(char *ip,int port)
{
int sockfd;
struct sockaddr_in addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == EOF){
perror("create_tcpsvr(),socket()");
exit(EXIT_FAILURE);
}
fill_sockaddr(&addr,ip,port);
if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) == EOF){
perror("create_tcpsvr(),bind()");
exit(EXIT_FAILURE);
}
if (listen(sockfd,LISTENTQ) == EOF) {
perror("create_tcpsvr(),bind()");
exit(EXIT_FAILURE);
}
return sockfd;
}
/**