#include<sys/socket.h>
#include<sys/types.h>
#include<netdb.h>
#include<netinet/in.h>
#include<stdio.h>
#define portno 3333
#define SIZE 1024
int main()
{
int sockfd,newfd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int sin_size;
int nbytes;
int n;
char buf[SIZE];
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("creat sockfd failed\n");
return -1;
}
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portno);
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sockfd,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr))==-1)
{
printf("bind failed\n");
return -1;
}
if(listen(sockfd,4)==-1)
{
printf("listen failed\n");
return -1;
}
while(1)
{
if((newfd=accept(sockfd,(struct sockaddr*)(&client_addr),&sin_size))==-1)
{
printf("accept failed\n");
return -1;
}
if((n=fork())==0)
{
printf("Connect successed:%s\n",inet_ntoa(client_addr.sin_addr));
if((nbytes=read(newfd,buf,SIZE))==-1)
{
printf("read data failed\n");
return -1;
}
buf[nbytes]='\0';
printf("Server received:%s\n",buf);
close(newfd);
close(sockfd);
exit(0);
}
else
close(newfd);
}
return 1;
}
TCP并发服务器程序
最新推荐文章于 2023-02-23 02:07:08 发布