tcpip 实验指导书

tcpip 实验指导书

ID:25904638

大小:1.73 MB

页数:34页

时间:2018-11-23

tcpip 实验指导书_第1页
tcpip 实验指导书_第2页
tcpip 实验指导书_第3页
tcpip 实验指导书_第4页
tcpip 实验指导书_第5页
资源描述:

《tcpip 实验指导书》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1.Linux文件IO基础API的使用1.1文件IO基础APIopenclosereadwritelseek1.2基础文件IO操作流程1.2.1打开将要进行读或写的磁盘文件如果要对一个文件进行操作,不管是读或者是写,首先需要将一个保存于磁盘的文件打开,并将文件数据装入内存中。在Linux中,使用open系统调用完成对一个磁盘文件的打开工作。文件定位在Linux系统中,用户通过文件路径告知操作系统所需要操作文件在文件目录树中的位置。例如:”/etc/passwd”这个文件路径,其是一个绝对路径,也就是从文件目录树的根开始的。对于该路径中包含了以下4个部分:[1].“/”:表示文件目录

2、树的根目录;[2].“etc”:表示根目录下的一个名为etc的子目录;[3].“/”:用来分隔不同层次的目录或文件名的分隔符号;[4].“passwd”:表示etc子目录中的一个文件passwd;应当注意的是,这个文件路径只是用户层次的路径,要真正找到并打开磁盘中对应的文件数据,Linux操作系统还需要做很多工作。但这些工作对于用户而言是透明的,用户只需通过调用系统提供的系统调用open时,为open提供所要操作的文件的路径字符串即可。即为open提供第一个参数的具体值。操作方式设定在提供了要操作文件的文件路径给open系统调用之外,还需要告知系统,用户将要如何操作该文件;如果文件

3、路径不存在,系统应该如何处理;如果创建一个文件,是否用户有特殊的权限设定;如果文件存在,那么向该文件写数据是覆盖还是追加等等。保存文件描述符利用open成功打开一个文件后,open系统调用会返回系统生成的一个该文件的文件描述符,而该文件描述符是之后操作给文件最重要的一个依据,所以在编写程序时,应该声明一个变量保存该文件描述符,以便之后对该文件的操作。1.2.2读取文件中的数据对已打开的文件进行读操作,可以调用read系统调用。在使用read系统调用时,需要首先准备足够大的缓冲区,特别是要读取完整的文件数据时。例如,我们希望读取路径/etc/passwd所指定的文件内容时,可以编写以

4、下程序段来保证该文件数据最终被读入到应用程序内存空间中。...//此处处理读出的文件数据...1.2.3向文件中写入数据在上一节中给出的代码完成了打开文件/etc/passwd,并将该文件中的数据读入到缓冲区buffer_read中的工作。而在本节中,下面给出的代码将打开文件/tmp/passwd,如果该文件不存在就创建该文件,如果该文件存在,那么就以覆盖的方式向文件中写入新数据。然后,将前面读取出来/etc/passwd文件的内容写入到/tmp/passwd文件中。...//关闭文件...1.2.4关闭文件前面程序完成了读取/etc/passwd文件的内容,并将其写入到/tmp/

5、passwd文件中。在完成了对文件的操作后,需要将打开的文件进行关闭。...2基于TCP的客户端与服务器设计流程2.1基于TCP的服务器TCP是面向连接的传输层协议,因此服务器通常情况下是被动等待客户程序的连接请求的到来,然后与该客户程序建立连接,并为客户程序提供相应服务。2.1.1设计流程基本描述1.建立服务器端本地套接字对象;2.为本地套接字绑定套接字地址;3.利用本地套接字监听网络,换句话来讲就是被动等待服务请求的到来;4.接受一个客户的连接请求,建立连接;5.响应客户请求,为客户提供服务;6.完成服务后,客户无需继续服务时断开连接,并返回3。2.1.2所涉及的函数与数据结构

6、2.1.2.1socket函数domain参数:type参数:protocol参数:IPPROTO_TCP:TCP传输协议IPPROTO_UDP:UDP传输协议IPPROTO_SCTP:SCTP传输协议返回值:执行成功,函数返回一个非负整数值,该值作为所创建的套接字对象的描述符sockfd,类似于文件间描述符;执行出错,函数返回-1;简要说明domain和type两个一般就可以确定一种协议:AF_INET和SOCK_STREAM可以确定IPv4和TCP协议AF_INET6和SOCK_STREAM可以确定IPv6和TCP协议AF_INET和SOCK_DGRAM可以确定IPv4和UDP

7、协议AF_INET6和SOCK_DGRAM可以确定IPv6和UDP协议如果默认使用由domain和type共同决定的协议时,protocol参数取值可以为0。2.1.2.2IPv4套接字地址#includestructin_addr{in_addr_ts_addr;/*32-bitIPv4address*//*networkbyteordered*/};structsockaddr_in{uint8_tsin_len;/*lengthofs

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。