/* tcp_server.c */
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#define portnum 3333
int main()
{
int sockfd,newfd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char buffer[128];
int nbyte;
int sin_size;
int pid;
//创建socket
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("create socket error\n");
exit(1);
}
//设置要绑定的地址
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(portnum);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定地址
bind(sockfd,(struct sockaddr*)&server_addr,sizeof(struct sockaddr));
//监听端口
listen(sockfd,5);
while(1)
{
//等待连接
sin_size = sizeof(struct sockaddr);
newfd = accept(sockfd,(struct sockaddr*)&client_addr,&sin_size);
printf("server get connection from %s\n",inet_ntoa(client_addr.sin_addr));
if(pid=fork()==0)
{
//接收数据
nbyte = recv(newfd,buffer,128,0);
buffer[nbyte] = '\0';
printf("server received :%s",buffer);
close(newfd);
close(sockfd);
exit(0);
}
else if(pid<0)
{
printf("fork error!\n");
}
//结束连接
close(newfd);
}
close(sockfd);
return 0;
}
并发服务器的设计
最新推荐文章于 2023-06-14 16:29:40 发布