int sockfd = socket(AF_INET, SOCK_STREAM, 0);//创建一个socket,AF_INET是协议族,表示IPV4网络协议,//SOCK_STREAM是指面向连接的稳定数据传输,即TCP协议
struct sockaddr_in servaddr;//网际套接字地址结构
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;//将地址族置为AF_INET,端口号13(时间获取服务的端口)
servaddr.sin_port = htons(13); /* htons将数的高位跟低位调换,特定格式*/
if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) return;//inet_pton将argv1比如206.168.112.96装换成合适的格式,这里用来代替inet_addr,因为它支持IPv6
if(connect(sockfd,(SA*)&servaddr,sizeof(srevaddr) < 0) return;//建立与服务器的连接
int n;
while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
//n是read返回值,表示读取到的数据的字节数,等于0表示socket关闭了,小于0表示出错了。
//为什么放在循环里是因为不能确定一次read就能返回服务的整个应答
recvline[n] = 0; /* 读取后的数据末尾置0 */
if (fputs(recvline, stdout) == EOF) return;//将读到的数据输出
}
if (n < 0) return;