《操作系统原理》实验9--Linux多线程文件传输实现.docx

上传人:p** 文档编号:644581 上传时间:2024-01-02 格式:DOCX 页数:6 大小:97.69KB
下载 相关 举报
《操作系统原理》实验9--Linux多线程文件传输实现.docx_第1页
第1页 / 共6页
《操作系统原理》实验9--Linux多线程文件传输实现.docx_第2页
第2页 / 共6页
《操作系统原理》实验9--Linux多线程文件传输实现.docx_第3页
第3页 / 共6页
《操作系统原理》实验9--Linux多线程文件传输实现.docx_第4页
第4页 / 共6页
《操作系统原理》实验9--Linux多线程文件传输实现.docx_第5页
第5页 / 共6页
《操作系统原理》实验9--Linux多线程文件传输实现.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
资源描述

《《操作系统原理》实验9--Linux多线程文件传输实现.docx》由会员分享,可在线阅读,更多相关《《操作系统原理》实验9--Linux多线程文件传输实现.docx(6页珍藏版)》请在第壹文秘上搜索。

1、操作系统原理实验报告实验序号:9实验项目:LinUX多线程文件传输实现学号姓名专业、班级实验地点指导教师实验时间一、实验目的及要求通过本实验的综合实践,使学生掌握LinUX多线程、SOCkel编程和文件系统操作等多项知识。二、实验设备(环境)及要求VMware虚拟机软件,Ubuntu系统三、实验内容与步骤包括服务器和客户端两部分。1服务器端创建监听与文件管理服务器负责的功能模块主要有两部分,一是对连接进来客户端所有线程的管理和服务器目录下的文件管理;二是创建线程来单独监听客户端的动作。为了便于管理,创建两个user.txt和client.txt两个文档来分别负责服务器的连接和客户端的连接。US

2、er.lxt中存放了服务器名和密码。Client.txt存放了连接客户端名字和密码。首先对服务器的创建有个监测,即在启动时先核实服务器的所有者username和密码PaSSWord,将输入的用户、密码与user.txt中的用户密码比较,匹配成功则同意启动,否则return-1表失败。接着创建一个SOCket套接口,绑定IP设置客户端的最大连接数为10,然后创建一个SeVer线程来实现对服务器本身监听动作。接下来创建线程完成对客户端的监听监听等待连接:while(l)sockdata=accept(sockfd,(structsockaddr*)0,(int*)0);我们定义结构体:struct

3、client_t(pthread_ttid;intconn_fd;intused;charname20;p_client10;来存放每个客户端的SoCket信息、线程标识、使用号、连接号和客户名。创建线程实现单独监听:p_clientfi.conn_fd=sockdata;p_clienti.used=i;strcpy(p_clienti.name,client_name);pthread_create(&p_clienti.tid,NULL,&client_conn,&p_clienti)接下来是线程Cliem_conn()的功能监听客户端的功能完成。2客户端连接与文件传输在客户端这边同样适

4、用了检测机制,运行客户机时要将用户名、密码以及ip地址和端口号作为参数输进来,先建立与服务器的连接,然后将用户名和密码发送到服务端检测,如果检测失败则接收到一条拒绝信息,连接断开,如果检测成功则接收到一条确认信息,双方通信开始。3实现步骤基于多线程的TCP套接字文件传输通信工作流程图,如图1所示。通信工作的大致流程:1) 服务器先用SoCket()函数来建立一个套接口,用这个套接口完成通信的监听及数据的收发。2) 服务器用bind()函数来绑定一个端口号和ip地址,是套接口与指定的端口号和ip关联。3) 服务器调用IiSten()函数,是服务器的端口和IP处于监听状态,等待网络中某一个客户机的

5、连接请求。4) 客户机用SoCket()函数建立一个套接口,设定远程ip和端口5) 客户机调用ConneCto函数连接远程计算机指定的端口。6) 服务器调用accept。函数来接受远程计算机的连接请求,建立起与客户机之间的通信连接。7) 建立连接之后,客户机用Write()函数(或Send()想socket中写入数据。也可以用read。函数(或recv()函数)赌气服务器发送来的数据。8) 服务器用read。函数(或recv()函数)来读取客户机发来的数据,也可以用Write()函数(或Send()函数)来发送数据。9) 完成通信以后,使用ClOSe()函数关闭socket连接。客户机进程服务

6、器进程图1TCP套接字通信工作实验步骤与结果:0ubuntu:/test_Ex/ex9/client$./client192.168.111.15*I-UpFile 2-DownFtle 3-FtIeLtst 4-Discoect* ase Input the Id: ubuntu:/test_Ex/ex9/server$ ./server ver: got connection from 192.168.111.15以上两图是客户端和服务器建立连接后,双方的状态。0ubuntu:/test_Ex/ex9/cltent$ ./client 192.168.111.15 *I-UpFtle 2-

7、DownFfle 3-FileList 4-Dtsconect*ase Input the Id: eKist:Io. c t2.hex5.cex4.cshare.c ex6 3.shubuntu:*/test_Ex/ex9/server$ ./server er: got connection from 192.168.ill.15 nt 192.168.111.15 : Request for FileList.以上两图是客户端要求显示文件列表的操作。*I-UpFtle 2-DownFtle 3-FUeLtst 4-Disconnect*PleaseInputtheId:2pleasein

8、putFtleNamethatyouwanttodownload:ex4.c12410241241ubuntu:/test_Ex/ex9/server$./serverer:gotconnectionfrom192.168.111.15et192.168.111.15:RequestforFileList.Ilelistex4.c444ex4.cExex9clientOclientfindHncltineIlinclIcliet.c以上三张图是客户端请求下载服务器上的文件的操作,数字代表传输的数据量的直接大小。不过有bug,就是文件是存在了,但是文件内容却是空的。服务器传输过来的字节没有写入在

9、客户端生成的文件中,一直在查找这个bug的问题。咆UbUntU:八esJExex9cltent5./client192.168.111.15*I-UpFlle* 2-DowFxT *3.FtXeList* 4-dXscoct*?aseInputtheId:4dByte!IbUnt一testExex9cIient$ubuntu:/test_Ex/ex9/server$./serverer:gotconnectionfrom192.168.111.15?nt192.168.111.15:RequestforFileList.Ilelistex4.c14er: got connection ?nt 192.168.111.15from 192.168.111.15 :is disconnect.以上两张图是客户端,服务器断开连接后的状态。四、分析与讨论这是本学期比较大型的实验,涉及到了个功能的实际应用,特别是通信方面的,还应该继续深入研究。五、教师评语签名:口期:成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 论文 > 毕业论文

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!