Linux网络编程之TCP.pdf
《Linux网络编程之TCP.pdf》由会员分享,可在线阅读,更多相关《Linux网络编程之TCP.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、深圳华北工控股份有限公司 -27-实验五实验五 Linux 网络编程之网络编程之 TCP 一一 实验目的实验目的 学习和掌握 linux 下的 UDP 通信的基本原理和基本编程方法 二二 实验平台实验平台 基于 ATOM N270,NORCO(华北工控)EMB-3850 嵌入式开发板 Linux redhat kernel-2.4 嵌入式操作系统 三三 实验内容实验内容 编写 linux 下 UDP 通信的程序 四四 参考资料参考资料 1、Linux 基础教程.吴学毅.北京交通大学出版社 出版日期:2005 年 9 月 2、红帽企业 Linux 4 X86-64 体系安装指南 3、Red Ha
2、t Enterprise Linux 4 System Administration Guide 4、TCP/IP 详解 5、Linux 中 TCP/IP 协议实现及嵌入式应用.张曦煌,北京航空航天大学出版社.出版时间:2008L 五五 实验原理实验原理 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的-客户端和服务器端。在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。被动的等待外面的程序来和自己通讯的程序称为服务端程序。在网络应用中通信的两个进程间相互作用的主要模式是客户端/服务器模式(C/S 模式),即客户向服务器发出请求,服务器接收到请求
3、后提供相应的服务。C/S 模式工作时要求有一套为客户机和服务器所共识的协议,在协议中有主从机之分。当服务器和应用程序需要和其它进程通信时就会创建套接口(socket),socket 主要完成配套接口和初始化、完成连接的系统调用、传送数据以及关闭接口等工作。TCP(Transfer Control Protocol)传输控制协议是一种面向连接的协议,当我们的网络程序使用这个协议的时候,网络可以保证我们的客户端和服务端的连接是可靠的、安全的。Linux 系统是通过提供套接字(socket)来进行网络编程的,网络程序通过socket 和其它几个函数的调用,会返回一个通讯的文件描述符,我们可以将这个描
4、述符看成普通的文件的描述符来操作我们可以通过向深圳华北工控股份有限公司 -28-描述符读写操作实现网络之间的数据交流。其中 TCP 通信常用的函数主要有以下几个:int socket(int domain,int type,int protocol)domain:说明网络程序所在的主机采用的通讯协族(AF_UNIX 和AF_INET 等)。AF_UNIX 只能够用于单一的 Unix 系统进程间通信,而 AF_INET 是针对 Internet 的,因而可以允许在远程主机之间通信。type:网络程序所采用的通讯协议(SOCK_STREAM,SOCK_DGRAM 等)SOCK_STREAM 表明我
5、们用的是 TCP 协议,这样会提供按顺序的可靠、双向、面向连接的比特流。SOCK_DGRAM 表明我们用的是 UDP 协议,这样只会提供定长的、不可靠、无连接的通信。Protocol:由于指定了 type,所以这个地方我们一般只要用 0 来代替就可以了。socket 为网络通讯做基本的准备,成功时返回文件描述符,失败时返回-1,看 errno 可知道出错的详细情况。int bind(int sockfd,struct sockaddr*my_addr,int addrlen)sockfd:是由 socket 调用返回的文件描述符。Addrlen:是 sockaddr 结构的长度。my_addr
6、:是一个指向 sockaddr 的指针。由于我们主要使用 Internet 所以 sin_family 一般为 AF_INET,sin_addr 设置为 INADDR_ANY 表示可以和任何的主机通信,sin_port是要监听的端口号,sin_zero8是用来填充的。bind 将本地的端口同 socket 返回的文件描述符捆绑在一起,成功是返回 0。int listen(int sockfd,int backlog)sockfd:是 bind 后的文件描述符。backlog:设置请求排队的最大长度,当有多个客户端程序和服务端相连时,使用这个表示可以介绍的排队长度。深圳华北工控股份有限公司 -2
7、9-listen 函数将 bind 的文件描述符变为监听套接字,返回的情况和 bind 一样。int accept(int sockfd,struct sockaddr*addr,int*addrlen)sockfd:是 listen 后的文件描述符。addr,addrlen:是用来给客户端的程序填写的,服务器端只要传递指针就可以了。bind、listen 和 accept 是服务器端用的函数,accept 调用时服务器端的程序会一直阻塞到有一个客户程序发出了连接。accept 成功时返回最后的服务器端的文件描述符,这个时候服务器端可以向该描述符写信息了,失败时返回-1。int connect
8、(int sockfd,struct sockaddr*serv_addr,int addrlen)sockfd:socket 返回的文件描述符。serv_addr:储存了服务器端的连接信息,其中 sin_add 是服务端的地址。addrlen:serv_addr 的长度。connect 函数是客户端用来同服务端连接的,成功时返回 0,sockfd 是同服务端通讯的文件描述符,失败时返回-1。六六 实验步骤实验步骤 a)登录进入 linux 操作系统,打开命令窗口进入 myprojects 文件夹,新建一文件夹取名为 tcp 令如下:cd/myprojects mkdir tcp b)进入 t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 网络 编程 TCP
限制150内