#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
最新推荐文章于 2025-11-08 22:19:14 发布
本文介绍了一个简单的TCP服务器程序实现过程,使用C语言并通过socket编程来创建一个能够接收客户端连接并进行简单消息交互的服务端。该服务端能监听指定端口,接受客户端连接,并通过子进程与多个客户端同时通信。


2674

被折叠的 条评论
为什么被折叠?



