嵌入式 网络编程(上).pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式 网络编程(上)

第4章内容回顾 进程间通信的各种方法 信号 文件锁 管道和FIFO 信号量 消息队列 共享内存 第5章 网络编程(上) 预习检查 网络模型有哪两类? OSI、TCP/IP OSI有哪七层? 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 端口号的作用? 区别不同服务 TCP建立与关闭连接分别几次握手? 3次 4次 本章目标 理解网络基本概念 掌握OSI 与TCP/IP模型每一层的名称与功能 理解数据在网络中传输过程中,数据包封装和拆封装的过程 理解TCP协议下的客户端和服务器端模型 掌握TCP协议网络编程 本章结构 计算机的联网可以实现 使用远程资源 共享信息、程序和数据 分布处理 OSI分层思想 数据的封装 IP地址 使用IP协议通讯的主机都有IP地址 在计算机中,IPv4地址用一个32位无符号整数表示 端口号 TCP/UDP协议使用16位整数存储端口号,所以每个主机拥有 65,535 个端口 一些端口被IANA分配给指定应用 21: FTP 23: Telnet 80: HTTP RFC 1700 (大约有2000个保留端口) TCP和UDP的区别 TCP提供一种面向连接的、可靠的字节流服务 UDP是无连接的、不可靠的数据协议报 套接字(Socket) Socket(套接字)是一种通 讯机制,它包含一整套的调 用接口和数据结构的定义, 它给应用进程提供了使用如 TCP/UDP等网络协议进行网 络通讯的手段。 TCP客户服务器编程模型 客户端通常的调用序列是: 调用socket函数创建套接字。 调用connect连接服务器端。 调用I/O函数(read/write)与服务器端通讯。 调用close关闭套接字。 服务器端通常的调用序列为: 调用socket函数创建套接字。 调用bind指定本地地址和端口。 调用listen启动监听。 调用accept从已连接列队中提取客户连接。 调用I/O函数(read/write)与客户端通讯。 调用close关闭连接。 TCP的连接和关闭过程 字节序 不同体系结构的主机使用不同的字节序存储器中保存多字节整数 字节序分为大端和小端字节序 网络协议使用网络字节序 网络字节序即大端字节序 判断字节序 static int isBigEndian() { uint32_t thisx = 0 uint8_t *thisp = (uint8_t *)thisx; return (*thisp == 1) ? 1 : 0; } int main(int argc, char **argv) { printf(Byte order: %s Endian\n, isBigEndian() ?Big :Little); return 0; } 字节序转换函数 htonl 将一个32位整数由主机字节序转换成网络字节序。 htons 将一个16位整数由主机字节序转换成网络字节序。 ntohl 将一个32位整数由网络字节序转换成主机字节序。 ntohs 将一个16位整数由网络字节序转换成主机字节序。 通用地址族结构 typedef unsigned short sa_family_t; #include sys/socket.h struct sockaddr { sa_family_t sa_family; /* 地址族 */ char sa_data[14]; /* 地址值,实际可能更长 */ }; #define SOCK_MAXADDRLEN 255 /* 可能的最长的地址长度 */ 我们不会真的用到sockaddr结构,我们需要填写真正的地址族相关的地址结构,然后在传递给需要地址结构的函数时, 把指向该结构的指针转换成(struct sockaddr *)就传递进去 IPV4地址族结构 #include netinet/in.h struct in_addr { in_addr_t s_addr; }; struct sockaddr_in { uint16_t sin_family; uint16_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; sin_family 地址族,如AF_INET, 主机字节序。 sin_port,端口号,16位值,网络字节序。 sin_addr,IPv4地址,一个32位整数,网络字节序。 。 域sin_addr由于历史原因被声明为类型struct in_addr, 但它实际上只包含一个32位的整数,这个类型定义在 netinet/in.h之中。 I

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档