📄 daytimecli.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 MAXBUFFSIZE 256void init_sockaddr(struct sockaddr_in *, const char *, const char *);int socket_connect(const char *hostname, const char *serv_port){ int sockfd; struct sockaddr_in sockaddr; struct hostent *hp; char *host, myname[104]; /* 初始服务器的IP地址和端口 */ init_sockaddr(&sockaddr, hostname, serv_port); /* 创建套接字 */ if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0) err_exit("socket error"); /* 建立与服务的连接 */ if(connect(sockfd, (struct sockaddr *)&sockaddr,sizeof(sockaddr)) < 0) err_exit("connect error"); return(sockfd);}int main(int argc, char **argv){ int sockfd,n; char recvbuff[MAXBUFFSIZE], *host; struct sockaddr_in servaddr; /* 检查参数 */ if(argc < 2) host = NULL; else host = argv[1]; /* 创建套接字并建立与服务的连接 */ sockfd = socket_connect(host,"13"); /* 读服务的回答并显示结果 */ while((n = read(sockfd,recvbuff,MAXBUFFSIZE)) > 0){ recvbuff[n] = 0; /* 填入终止符 */ fputs(recvbuff,stdout); } if(n<0) err_exit("read error"); exit(0);}void init_sockaddr(struct sockaddr_in *name, const char *hostname, const char *serv){ struct hostent *hp; char *host,myname[255]; if (hostname == NULL){ gethostname(myname, sizeof(myname)); host = myname; } else host = hostname; /* 获取主机地址信息 */ if ((hp = gethostbyname(host)) == NULL){ printf("Unknown host: %s\n", host); exit(-1); } /* 填入服务器的IP地址和端口 */ bzero(name,sizeof(struct sockaddr)); if (hp->h_addrtype == AF_INET){ name->sin_family = AF_INET; bcopy(hp->h_addr_list[0], &name->sin_addr, hp->h_length); if (serv == NULL) name -> sin_port = htons(0); else name -> sin_port = htons(atoi(serv)); } else { printf("Unknown address type\n"); exit(-1); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -