📄 example71.c
字号:
/* example71.c */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#define MAXLEN 1024
#define SERV_PORT 8080
#define BACKLOG 5
void serv();
int
main()
{
int listenfd, connetfd;
pid_t childpid;
socklen_t clilen;
struct sockaddr_in cliaddr, servaddr;
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket error");
exit(0);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if ((bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr))) < 0) {
perror("bind error");
exit(0);
}
if (listen(listenfd, BACKLOG) < 0) {
perror("listen error");
exit(0);
}
for ( ; ; ) {
clilen = sizeof(cliaddr);
connetfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen);
if ((childpid = fork()) == 0) {
close(listenfd);
serv(connetfd);
exit(0);
}
close(connetfd);
}
}
void
serv(int connfd)
{
ssize_t n;
char line[MAXLEN];
for ( ; ; ) {
if ((n = read(connfd, line, MAXLEN)) == 0) {
perror("connect closed by client");
exit(0);
}
if (line[0] == '1') {
sleep(3);
write(connfd, "server respons to client1", 26);
}
else
write(connfd, "server respons to client2", 26);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -