📄 daytimeser.c
字号:
#include <time.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include "err_exit.h"#define LISTENQ 5#define MAXLINE 512int make_socket(unsigned short int);int main(int argc, char **argv){ int listenfd,connfd; socklen_t len; struct sockaddr_in servaddr,cliaddr; char buff[MAXLINE]; time_t ticks; /* 创建并命名套接字,make_socket参见程序12-9 */ listenfd = make_socket(13); /* daytime 服务端口 */ /* 创建侦听队列 */ listen(listenfd, LISTENQ); /* 连接处理 */ for(; ;){ len = sizeof(cliaddr); /* 接收连接 */ connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &len); /* 打印出连接的客户是谁 */ printf("connect from %s,port %d\n", inet_ntoa(cliaddr.sin_addr.s_addr),ntohs(cliaddr.sin_port)); /* 向客户报告时间 */ ticks = time(NULL); sprintf(buff,"%.24s\r\n",ctime(&ticks)); write(connfd,buff,strlen(buff)); /* 关闭连接套接字 */ close(connfd); }}int make_socket(unsigned short int port){ int sock; struct sockaddr_in name; /* 创建套接字 */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) err_exit("socket"); /* 命名该套接字 */ name.sin_family = AF_INET; name.sin_port = htons (port); name.sin_addr.s_addr = htonl (INADDR_ANY); if (bind(sock, (struct sockaddr *) &name, sizeof(name)) < 0) err_exit ("bind"); return sock;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -