📄 cherry.c
字号:
/******* 服务器程序 cherry.c ************/#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <netdb.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>#define WAITBUF 10#define BUFSIZE 1024intmain (int argc, char *argv[]){ int sockfd, accept_sock; struct sockaddr_in server_addr; struct sockaddr_in client_addr; socklen_t sin_size = sizeof (struct sockaddr_in); char reply[] = "I love you too!"; char buffer[1024] = { 0 }; int portnumber; int nread; if (argc != 2) { fprintf (stderr, "Usage:%s portnumber\a\n", argv[0]); exit (1); } /* 端口号不对,退出 */ if ((portnumber = atoi (argv[1])) < 0) { fprintf (stderr, "Usage:%s portnumber\a\n", argv[0]); exit (1); } /* 服务器端开始建立socket描述符 */ if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1) { fprintf (stderr, "Socket error:%s\n\a", strerror (errno)); exit (1); } /* 服务器端填充sockaddr结构 */ bzero (&server_addr, sizeof (struct sockaddr_in)); server_addr.sin_family = AF_INET; /* 自动填充主机IP */ server_addr.sin_addr.s_addr = htonl (INADDR_ANY); server_addr.sin_port = htons (portnumber); /* 捆绑sockfd描述符 */ if (bind (sockfd, (struct sockaddr *) (&server_addr), sizeof (struct sockaddr)) == -1) { fprintf (stderr, "Bind error:%s\n\a", strerror (errno)); exit (1); } /* 监听sockfd描述符 */ if (listen (sockfd, WAITBUF) == -1) { fprintf (stderr, "Listen error:%s\n\a", strerror (errno)); exit (1); } /* 服务器阻塞,直到客户程序建立连接 */ if ((accept_sock = accept (sockfd, (struct sockaddr *) (&client_addr), &sin_size)) == -1) { fprintf (stderr, "Accept error:%s\n\a", strerror (errno)); exit (1); } /* 接收并打印客户端发来的数据 */ if ((nread = recv (accept_sock, buffer, sizeof (buffer), 0)) == -1) { fprintf (stderr, "recv Error:%s\n", strerror (errno)); exit (1); } printf ("%s\n", buffer); memset (buffer, 0, sizeof (buffer)); /* 回复 */ if (send (accept_sock, reply, strlen (reply), 0) == -1) { fprintf (stderr, "Send Error:%s\n", strerror (errno)); exit (1); } /* 结束通讯 */ close (accept_sock); close (sockfd); exit (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -