预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

深圳华北工控股份有限公司 实验五Linux网络编程之TCP 一.实验目的 学习和掌握linux下的UDP通信的基本原理和基本编程方法 二.实验平台 基于ATOMN270,NORCO(华北工控)EMB-3850嵌入式开发板 Linuxredhatkernel-2.4嵌入式操作系统 三.实验内容 编写linux下UDP通信的程序 四.参考资料 1、Linux基础教程.吴学毅.北京交通大学出版社出版日期:2005年9月 2、红帽企业Linux4X86-64体系安装指南 3、RedHatEnterpriseLinux4SystemAdministrationGuide 4、TCP/IP详解 5、Linux中TCP/IP协议实现及嵌入式应用.张曦煌,北京航空航天大学 出版社.出版时间:2008L 五.实验原理 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分 组成的--客户端和服务器端。在网络程序中,如果一个程序主动和外面的 程序通信,那么我们把这个程序称为客户端程序。被动的等待外面的程序 来和自己通讯的程序称为服务端程序。 在网络应用中通信的两个进程间相互作用的主要模式是客户端/服务 器模式(C/S模式),即客户向服务器发出请求,服务器接收到请求后提供 相应的服务。C/S模式工作时要求有一套为客户机和服务器所共识的协 议,在协议中有主从机之分。当服务器和应用程序需要和其它进程通信时 就会创建套接口(socket),socket主要完成配套接口和初始化、完成连 接的系统调用、传送数据以及关闭接口等工作。TCP(TransferControl Protocol)传输控制协议是一种面向连接的协议,当我们的网络程序使用 这个协议的时候,网络可以保证我们的客户端和服务端的连接是可靠的、 安全的。Linux系统是通过提供套接字(socket)来进行网络编程的,网络 程序通过socket和其它几个函数的调用,会返回一个通讯的文件描述符, 我们可以将这个描述符看成普通的文件的描述符来操作我们可以通过向 -27- 深圳华北工控股份有限公司 描述符读写操作实现网络之间的数据交流。其中TCP通信常用的函数主 要有以下几个: intsocket(intdomain,inttype,intprotocol) domain:说明网络程序所在的主机采用的通讯协族(AF_UNIX和 AF_INET等)。 AF_UNIX只能够用于单一的Unix系统进程间通信,而AF_I NET是针对Internet的,因而可以允许在远程主机之间通信。 type:网络程序所采用的通讯协议(SOCK_STREAM, SOCK_DGRAM等) SOCK_STREAM表明我们用的是TCP协议,这样会提供按顺 序的可靠、双向、面向连接的比特流。 SOCK_DGRAM表明我们用的是UDP协议,这样只会提供定 长的、不可靠、无连接的通信。 Protocol:由于指定了type,所以这个地方我们一般只要用0来代替 就可以了。socket为网络通讯做基本的准备,成功时返回 文件描述符,失败时返回-1,看errno可知道出错的详细 情况。 intbind(intsockfd,structsockaddr*my_addr,intaddrlen) sockfd:是由socket调用返回的文件描述符。 Addrlen:是sockaddr结构的长度。 my_addr:是一个指向sockaddr的指针。 由于我们主要使用Internet所以sin_family一般为AF_INET, sin_addr设置为INADDR_ANY表示可以和任何的主机通信,sin_port 是要监听的端口号,sin_zero[8]是用来填充的。 bind将本地的端口同socket返回的文件描述符捆绑在一起,成功是返 回0。 intlisten(intsockfd,intbacklog) sockfd:是bind后的文件描述符。 backlog:设置请求排队的最大长度,当有多个客户端程序和服务端相连 时,使用这个表示可以介绍的排队长度。 -28- 深圳华北工控股份有限公司 listen函数将bind的文件描述符变为监听套接字,返回的情 况和bind一样。 intaccept(intsockfd,structsockaddr*addr,int*addrlen) sockfd:是listen后的文件描述符。 addr,addrlen:是用来给客户端的程序填写的,服务器端只要传递指针 就可以了。bind、listen和accept是服务器端用的函 数,accept调用时服务器端的程序会一直阻塞到有一 个客户程序发出了连接。accept成功时返回最后的服 务器端的文件描述符,这个时候