- 1、本文档共51页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux网络应用开发
第7章 嵌入式Linux网络应用开发 第7章 嵌入式Linux网络应用开发 7.1 网络编程的基础知识 7.1.1 IP地址和端口号 7.1.2 套接字 7.2 Socket网络编程 7.2.1 Socket网络函数 7.2.2 socket网络编程示例 7.3 嵌入式系统的Web服务器程序设计 7.3.1 Web服务器 7.3.2 Web服务器的程序设计 7.4 开发新的TCP通信协议 7.1 网络编程基础知识 7.1.1 IP地址和端口号 1、 客户端程序和服务端程序 网络程序和单机程序的最大区别在于,网络程序是由两个部分组成的—客户端程序和服务端程序。 在网络中,安装并运行服务端程序的计算机称为服务器,而运行客户端程序的计算机称为客户机。 7.1.1 IP地址和端口号 1、 客户端程序和服务端程序 网络通信时,先启动服务端程序,等待客户端发起连接。一旦有客户端发来了连接请求,服务端随之响应,从而建立起一条数据通信信道。连接过程如图所示。 7.1.1 IP地址和端口号 2、IP地址 网络中连接了很多计算机,假设计算机A向计算机B发送信息,若网络中还有第三台计算机C,那么主机 A怎么知道信息被正确传送到主机B而不是被传送到主机C中了呢?如图所示。 7.1.1 IP地址和端口号 2、IP地址 在网络上的每台计算机都必须有一个唯一的IP地址作为标识,网络中的计算机则通过IP地址找到要传送数据的另一台主机。 IP地址通常写作一组由“.”号分隔的十进制数,如: 3、端口 由于一台计算机上可同时运行多个网络程序,IP地址只能保证把数据信息送到该计算机,但无法知道要把这些数据交给该主机上的哪个网络程序 。 用“端口号” 标识正在计算机上运行的进程(程序)。 端口号是一个整数,其取值范围为0~65535之间。 3、端口 每个被发送的网络数据包也都包含有“端口号”,用于将该数据帧交给具有相同端口号的应用程序来处理。 4、TCP与UDP协议 “传输控制协议”(Transmission Control Protocol,简称TCP)。 TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无差错的数据传输。应用程序利用TCP进行通信时,信息源与信息目标之间会建立一个虚连接。这个连接一旦建立成功,两台计算机之间就可以把数据当作一个双向字节流进行交换。 4、TCP与UDP协议 “用户数据报协议”(User Datagram Protocol,简称:UDP)。 UDP是无连接通信协议,UDP不保证可靠数据的传输。简单地说,如果一个主机向另外—台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否巳准备接收数据。 7.1.2 套接字 1、什么是套接字 在TCP/IP通信协议中,套接字(Socket)就是IP地址与端口号的组合。 如图所示,IP地址与端口号13组成一个套接字。 2、套接字类型 (1)字节流套接字,基于TCP协议的连接和传输方式,又称为TCP套接字。 (2)数据报套接字,基于UDP协议的连接和传输方式,又称为UDP套接字。 (3)原始套接字,原始套接字允许对底层协议如IP或ICMP进行直接访问,提供TCP套接字和UDP套接字所不提供的功能,主要用于对一些协议的开发,如构造自己的TCP或UDP分组等。 7.2.1 Socket网络函数 1、socket函数 调用socket函数获得一个套接字描述符。 函数原型为: int socket(int family,int type,int protocol); 函数返回值:成功则返回套接字描述符,这是一个非负整数,若出错则返回-1。 2、bind函数 该函数为套接字描述符分配一个本地IP地址和一个端口号,将IP地址和端口号与套接字描述符绑定在一起。 函数原型为: int bind(int sockfd,struct sockaddr *myaddr,int addrlen); 函数返回值:若调用成功则返回0,若出错则返回-1。 3、地址结构 在网络编程中有二个很重要的数据类型,它们是地址结构struct sockaddr和struct sockaddr_in,这两个数据类型都是用来存放socket信息的。 Struct sockaddr的结构 struct sockaddr {? unsigned short sa_family; /* 通信协议类型族, AF_xxx */? char sa_data[14]; /* 14字节协议地址,包含该socket的IP地址和端口号 */? }; struct sock
文档评论(0)