/*multisevertcp.c*/
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<signal.h>
#define portnumber 3333
int main()
{
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd=socket(AF_INET,SOCK_STREAM,0);
server_address.sin_family=AF_INET;
server_address.sin_addr.s_addr=htonl(INADDR_ANY);
server_address.sin_port=htons(portnumber);
server_len=sizeof(server_address);
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
signal(SIGCHLD,SIG_IGN);
while(1)
{
char ch;
printf("server waiting\n");
client_len=sizeof(client_address);
client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);
/*通过fork调用为这个客户创建一个子进程*/
if(fork()==0)//子进程
{
read(client_sockfd,&ch,1);
sleep(2);
ch++;
write(client_sockfd,&ch,1);
close(client_sockfd);
exit(0);
}
else //父进程
{
close(client_sockfd);
}
}
}