linux 内网共享文件夹_基于Linux的内网文件共享程序的实现的小设计

本文介绍了在Ubuntu虚拟机环境下,基于Linux的内网文件共享程序设计。通过Socket通信,实现文件的上传、下载和管理。讲解了Socket接口的工作原理和在TCP/IP网络编程中的应用,并提供了客户端和服务端的编程框架和具体代码实现。实训旨在提升C语言编程和Linux操作系统的实践能力。
摘要由CSDN通过智能技术生成

摘要

Ubuntu是一个以桌面应用为主的Linux操作系统,想更加深人地体验Ubuntu,则需要运行虚拟机,在虚拟机中获得更完整的体验。下载安装虚拟机。成功安装后运行虚拟机,选择菜单栏中的“管理”→“导入虚拟电脑”选项,将所下载体验镜像导入虚拟机,最后运行Ubuntu虚拟机,这样就可以获得比较真实的体验。在虚拟机中几乎可以完成所有操作,没有限制。我们本次编程都是基于Vmware下运行的ubuntu终端进行的。

在计算机中,凡是提供服务的一方我们称为服务端(Server),而接受服务的另一方我们称作客户端(Client)。不过客户端及服务器端的关系不见得一定建立在两台分开的机器上,提供服务的伺服端及接受服务的客户端也有可能都在同一台机器上,这样在同一台机器上就同时扮演服务器端及客户端,所以我们采用双开ubuntu终端模拟进行本次的文件传输。

套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要进行TCP/IP网络编程,必须理解Socket接口。

一.实训系统总述

由于学生对C语言,操作系统的实际操作跟知识有所欠缺,所以进行本次实训以增强动手,动脑实践能力,摆脱以往学校的模式用契合实际工作的模式进行小项目编程,项目简单易上手,其中包括文件的上传,下载和管理,学会在windows系统上运行虚拟机以支持ununtu系统运行,以及了解linux的系统优点和搜查本课题的编程知识,拓宽自己的视野了解更多以后工作所需的知识。

2.实训要求:

进行Liunx下基于socket套接字的文件传输程序设计,包括文件的进行管理,点对点传输(上传,下载),删除文件等。查阅了解编写该程序的所有知识,理解每个代码跟函数的用法跟意义并进行总结,最后会进行答辩。

3.  开发工具与平台:

开发工具:一台windows系统电脑,C语言;

开发平台:Linux系统

二.设计原理

1.程序总体设计思路

让客户端与服务器建立链接即可实现通信

服务端建立套接字的大致步骤:

(1)建立socket;(2)bind绑定特定的端口;(3)listen监听特定的端口;(4)Accept当有客户端连接服务器端口时,accept接收信息,并返回新的套接字描述符﹐提供给操作;(5)根据实际需求进行write,read,send,recv等操作。

客户端大致步骤:

1.创建socket;2.根据服务器地址,connect连接到特定服务器;3.进行write,read等读写操作;4.关闭套接字。

2.程序总体设计框架

基础数据传输框架:

基于socket的TCP/IP协议通信框架:

3.整个文件传输系统中客户端及服务器所需实现的功能:

4.具体数据传输思路解释:

(1)服务器先用socket()函数来建立一个套接口,用这个套接口完成通信的

监听及数据的收发。

(2)服务器用bind()函数来绑定一个端口号和ip地址,是套接口与指定的

端口号和ip关联。

(3)服务器调用linsten()函数,是服务器的端口和lp处于监听状态,等待

网络中某一个客户机的连接请求。

(4)客户机用socket()函数建立一个套接口,设定远程ip和端口

(5)客户机调用connect()函数连接远程计算机指定的端口。<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值