【笔记】第一个socket程序

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;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值