博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNIX 获取服务器时间客户端程序
阅读量:6143 次
发布时间:2019-06-21

本文共 1626 字,大约阅读时间需要 5 分钟。

开始学习大师之作《UNIX 网络编程》,唯一不喜欢的是包裹函数

#include    "unp.h"int main(int argc, char **argv){    int sockfd, n;    char recvline[MAXLINE + 1];    struct sockaddr_in  servaddr;    if (argc != 2)        err_quit("usage: a.out 
"); /* * socket 函数创建一个网际(AF_INET)字节流(SOCK_STREAM)套接字 * sockfd 是一个小整数描述符,唯一标示一次套接字连接活动 * int socket(int domain, int type, int protocol) * domain 通信协议的族 * PF_UNIX,PF_LOCAL 本地通信 PF_X25 ITU-T X25 / ISO-8208协议 * AF_INET,PF_INET IPv4 Internet协议 PF_AX25 Amateur radio AX.25 * PF_INET6 IPv6 Internet协议 PF_ATMPVC 原始ATM PVC访问 * PF_IPX IPX-Novell协议 PF_APPLETALK Appletalk * PF_NETLINK 内核用户界面设备 PF_PACKET 底层包访问 */ if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_sys("socket error"); bzero(&servaddr, sizeof(servaddr));//初始化网际套接字地址结构 servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); /* port 13 daytime server */ if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)//从argv[1] 中获取IP地址,并且格式化 err_quit("inet_pton error for %s", argv[1]); /* * int connect(int s, const struct sockaddr * name, int namelen) * s:标识一个未连接socket * name:指向要连接套接字的sockaddr结构体的指针 * namelen:sockaddr结构体的字节长度 */ if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)//servaddr 转 sockaddr err_sys("connect error"); while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = 0; /* null terminate */ if (fputs(recvline, stdout) == EOF) err_sys("fputs error"); } if (n < 0) err_sys("read error"); exit(0);}

转载于:https://blog.51cto.com/superhakce/2088098

你可能感兴趣的文章