第20章 嵌入式Linux的网络编程.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文档。上传文档
查看更多
第20章 嵌入式Linux的网络编程

第20章 嵌入式Linux的网络编程 本章将介绍嵌入式Linux网络编程的基础知识。由于网络在嵌入式系统中的应用日益广泛,很多的应用中都会或多或少的涉及到网络应用,因此,掌握这方面的内容也是非常重要的。 20.1 TCP/IP协议 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制。当今在通信界有许多可采用的协议,如 NetBios、IPX/SPX、TCP/IP 等。这些协议具有处理各种不同数据通信类型类型的几种基本结构。 TCP/IP 许多年来一直被人们所采用,而且越来越成熟,大多数类型的计算机环境都有 TCP/IP产品,它提供了文件传输、电子邮件、终端仿真、传输服务和网络管理等功能。 20.2 TCP协议 TCP协议处于传输层,实现了从一个应用程序到另一个应用程序的数据传递。应用程序通过目的地址和端口号来区分接受数据的不同应用程序。TCP协议通过三次握手来初始化,目的是使数据段的发送和接受同步,告述其他主机其一次可接收的数据量,并建立连接。 20.2.1 TCP连接建立的过程 TCP连接的建立需耍连接的双方发送自己的同步SYN信息给对方,在SYN中包含了末端初始的数据序号,并且需要收到对方对白身发出SYN的确认。一个典型的TCP连接建立的过程如下: (1)A?B (2)A?B (3)A?B 20.2.2 TCP连接的标示 TCP是实现两主机间进程的通信,所以只有两个主机的IP地址是不能标识条连接的,在TCP中,使用两个socket来标识一条连接。Socket由本地的IP地址和进程使用的端口号组成,本地IP地址,本地端口。这样对于一条TI~P连接,就可以使用两个一元组来唯确定本地IP地址,本地端口,远端IP地址,远端端口或者使用四元组来表示本地IP地址,本地端口,远端IP地址,远端端口。 20.2.3关闭TCP连接 关闭一条TCP连接有3种可能的情况: 发起连接的一方(主机A)请求关闭TCP连接。 主机B主动请求关闭TCP连接。 主机A和主机B同时发起断开连接的请求,其过程与上述两种情况大体相同,就不再详细介绍了。 20.3 UDP协议 UDP协议是一种无连接的协议,因此不需要像TCP那样通过三次握手来建立一个连接。同时,一个UDP应用可同时作为应用的客户或服务器方。由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单得多。 使用UDP协议工作的服务器,通常是非面向连接的。因而服务器进程不需要像TCP协议服务器那徉建立连接,UDP服务器只需要在绑定的端口上等待客户机发送来的UDP数据报,并对其进行处理和响应。 20.4 socket简介 Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发。TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 20.4.1 socket的定义 在LINUX系统中,所有的I/O操作都是通过读写文件描述符而产生的,socket(套接字)是一种特殊的文件描述符。当得到了一个socket之后,就可以使用send()和recv()系统调用与其他的程序通信。当然也可以使用read() 和write()等系统操作调用而与其他的程序进行通信,但send()和recv()调用可以提供一种更好的数据通信的控制手段。 20.4.2 socket的类型 常见的socket有3种类型: 流式socket 数据报socket 原始socket 20.5 TCP Server程序设计 前面我们简单介绍了TCP/IP协议,事实上该协议是十分复杂的,要编写一个优秀的网络程序也是十分困难的。笔者将尽最大可能简化相关细节的讨论,以便是读者能通过本章的学习,对网络程序的编写有一个概貌性的理解,而不是拘泥在各种细节之中。 20.5.1 TCP的通信过程 以最常用的TCP协议为例,一个典型的通信过程如图20-2所示: 20.5.2 TCP Server程序 为了介绍基于socket编程的基本流程和所用到的API函数,我们将通过一个实际的例子来学习。这个例子包含两个部分:服务器端程序和客户端程序。首先列出服务器端的程序的代码,稍后再介绍客户端程序。 20.5.3 网络地址的表示 在引入了众多头文件之后,源代码第12、13行定义了两个sockaddr_in数据类型的变量。它们分别代表了服务器和客户端的网络地址。网络地址的表示主要通过两个重要的数据类型:sockaddr和sockaddr_in。 20.5.4 建立socket 第17行到第26行为从命令行获得服务器的监听端口,第28行通过socket()系统调用建立了一个套接字socket。该系统调用的函数原型为: #inclu

文档评论(0)

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

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

1亿VIP精品文档

相关文档