#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#define LETH 1024
int main()
{
int listenfd, connfd, pfd;
struct sockaddr_in servaddr;
char buf[LETH];
char sendmsg[LETH];
int n;
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("create socket error.\n");
return -1;
}
printf("create socket.\n");
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(6666);
if (bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)
{
printf("bind socket error.\n");
close(listenfd);
return -1;
}
printf("bind socket.\n");
if (listen(listenfd, 10) == -1)
{
printf("listen socket error.\n");
close(listenfd);
return -1;
}
printf("listen socket.\n");
while(1)
{
if ((connfd = accept(listenfd, (struct sockaddr *)NULL, NULL)) == -1)
{
printf("accept socket error.\n");
close(listenfd);
return -1;
}
printf("accept socket.\n");
pfd = fork();
if (pfd < 0)
{
printf("fork error.\n");
close(listenfd);
return -1;
}
else if (pfd == 0)
{
while(1)
{
n = recv(connfd, buf, LETH, 0);
buf[n] = '\0';
printf("recv form is %s\n");
if (strstr(buf, "quit") != NULL)
{
printf("client is quit.\n");
close(connfd);
break;
}
fgets(sendmsg, LETH, stdin);
if( send(connfd, sendmsg, strlen(sendmsg), 0) < 0)
{
printf("send error.\n");
}
}
}
else
{
continue;
}
}
close(listenfd);
}
linux socket编程-server
最新推荐文章于 2024-04-25 08:28:16 发布