《Unix 网络编程》学习笔记 第一章:简介
来源:互联网 发布:mac怎么建文本文件 编辑:程序博客网 时间:2024/05/16 01:07
1.1概述
要编写通过计算机网络通信的程序,首先要确定这些程序相互通信所用的协议(Protocol)。坚持采用客户/服务器(C/S)模型的网络应用较为普遍。
1.2一个简单的时间获取程序
#include "unp.h" //包含本书作者编写的头文件,该头文件包含大部分网络程序都需要的系统头文件intmain(int argc, char **argv) //其形参就是命令行参数,即程序运行命令行参数需要输入服务器IP地址{int sockfd, n;char recvline[MAXLINE + 1];struct sockaddr_in servaddr;if(argc != 2)err_quit("usage: a.out <IPaddress>");if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) //socket函数创建一个网际(AF_INET)字节流(SOCK_STREAM)套接字,且返回一个小整数描述符err_sys("socket error");bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(13); //1、端口号13 是时间服务端口号 2、htons是整型数据转变字节序(大小端)为网络字节序if(inet_pton(AF_INET, argv[1], &servaddr,sin_addr) <= 0) //库函数inet_pton将字符型参数转换为数值err_quit("inet_pton error for %s", argv[1]);if(connect(sockfd, (SA*) &servaddr, sizeof(servaddr)) < 0)err_sys("connect error");while ((n = read(sockfd, recvline, MAXLINE)) > 0) {recvline[n] = 0;//null terminateif (puts(recvline, stdout) == EOF)err_sys("fputs error");}if (n < 0)err_sys("read error");exit(0);}源代码下载地址:http://www.unpbook.com/src.html
tar -xzvf upv13e.tar.gz
打开解压的目录,发现有个readme文件,按照要求的步奏执行即可。
当然你会发下,如果你的linux环境,未打开daytime服务的,需要开启daytime服务,就在你当前的源代码目录ls你可以看到有个daytimetcpsrv文件,执行sudo ./daytimetcpsrv。它的功能就是开启本机的daytime服务。
1.3协议无关性
通过修改上面程序的5行代码(包括套接字结构类型,网际族设置参数),可以得到与IPv6协议相关的程序。如何编写与协议无关的版本,同时人们更习惯于用域名来代替数字。后续11章会讨论这些问题。
1.4错误处理:包裹函数
通过定义包裹函数来缩短程序。每个包裹函数完成实际的函数调用,检查返回值,并在发生错误时种植进程。
1.5一个简单的时间获取服务器程序
阅读全文
0 0
- 《Unix 网络编程》学习笔记 第一章:简介
- UNIX网络编程卷一 笔记 第一章 简介
- unix网络编程笔记(第一章)
- UNIX网络编程卷一 第一章 简介
- 重读UNIX网络编程第一章笔记修正
- unp 浅读--学习unix网络编程第一章
- Unix网络编程学习笔记之第1章 简介
- 【UNIX网络编程读书笔记】第一章 简介和TCP/IP(程序之后的笔记)
- UNIX网络编程 第一章
- Unix环境高级编程 第一章 学习笔记
- UNP《网络编程》笔记 第一章 简介
- Unix网络编程学习笔记
- UNIX网络编程学习笔记
- UNIX网络编程笔记(1):TCP简介
- 《UNIX网络编程 卷2》 笔记: 简介
- 《Unix网络编程卷1》笔记(1):第一章简介——使用Cygwin运行示例代码
- Unix网络编程学习笔记之第3章 套接字编程简介
- 《unix/linux编程实践教程》学习笔记:第一章概论
- nmon使用方法
- hdoj 1039 Easier Done Than Said?(水题)
- 【专访】黄健宏:为什么真正的聪明人喜欢用笨方法?
- 【Vue】详解Vue组件系统
- appium swipe不能使用和tap不能使用
- 《Unix 网络编程》学习笔记 第一章:简介
- 获取页面DOM数脚本
- mysql和oracle的sql语法
- spark(12)-从Spark架构中透视Job(course21)
- 制作img镜像文件的5种方法
- Node.js 入门笔记(2)
- 获取DOM的样式
- Android中byte数组生成文件并保存到手机
- eureka配置账号密码才能访问