linux上机实习报告

合集下载

linux实训报告总结

linux实训报告总结

linux实训报告总结本报告旨在总结和回顾我在Linux实训中所学到的知识和经验。

通过实际操作,我深入理解了Linux操作系统的核心概念和基本原理,同时也提升了自己的技能和能力。

一、实训背景和目的Linux实训是为了帮助学员掌握Linux操作系统的安装、配置和管理,以及开发和维护Linux应用程序的能力。

通过实践项目,学员在模拟的真实环境中学习并应用所学知识,提高自己在Linux领域的实际应用能力。

二、实训内容及过程1. Linux系统安装与配置在实训开始阶段,我们首先学习了Linux操作系统的安装和基本配置。

通过下载适当版本的Linux发行版,我们按照指导完成了Linux的安装,并进行了基本设置和网络配置。

2. Linux命令行操作Linux实训的重点之一是学习命令行操作。

我们通过练习常用的命令和参数,熟练掌握了文件与目录管理、用户和权限管理、进程和服务管理等方面的技能。

我们还学习了Shell脚本编写和调试,能够自动化执行一系列操作。

3. Linux网络配置与服务在Linux实训中,我们学习了网络配置与服务管理的基本知识。

我们了解了网络协议和配置文件的概念,能够设置网络接口、IP地址、子网掩码和网关等。

同时,我们还掌握了常用的网络服务如Web服务器、FTP服务器和邮件服务器的安装和配置方法。

4. Linux安全和权限管理在Linux实训的后期,我们重点学习了Linux系统的安全和权限管理。

我们了解了用户和组的概念,学习了用户权限和文件权限的设置和管理方法。

我们还学习了防火墙和入侵检测系统的原理和配置,以提高系统的安全性。

三、实践项目在Linux实训中,我们还参与了一系列实践项目,以应用所学知识并提升实际操作能力。

项目包括但不限于:- 搭建并配置Web服务器,实现网页访问和动态内容展示。

- 创建并管理数据库服务器,实现数据存储和检索功能。

- 编写Shell脚本,实现自动化系统管理和任务处理。

- 搭建并维护邮件服务器,实现邮件的发送和接收功能。

linux 上机报告心得

linux 上机报告心得

linux 上机报告心得
在Linux上机实验中,我学到了很多关于Linux操作系统的基础
知识和操作技巧。

以下是我在实验中的一些心得体会。

首先,在使用Linux操作系统时,必须先熟悉基本的命令行操作。

例如,常用的cd命令用于更改当前工作目录,ls命令用于列出当前目录下的文件和子目录,mkdir命令用于创建新目录等等。

此外,还有一些其他的命令,例如cp、mv、rm等,这些命令可以用于复制、移动和
删除文件和目录。

另外,在实验中,我也学到了Linux操作系统的文件系统结构。

Linux文件系统由许多不同的目录和子目录组成,每个目录都有特定的用途。

例如,/bin目录包含系统的基本命令,/usr目录包含用户应用
程序,/etc目录包含系统的配置文件等等。

了解这些目录结构对于更
方便地使用Linux操作系统非常重要。

在实验中,我也学到了Linux上如何编译和运行程序。

Linux操作系统通常有多种编译器可供选择,例如gcc、g++等。

在编写程序后,
可以使用相应的编译器将代码编译成可执行文件。

然后,使
用./filename命令即可运行程序。

此外,在实验中,我还学到了Linux上如何通过网络连接到其他计算机。

例如,可以使用ssh命令连接到其他计算机以进行文件传输和远程访问。

总的来说,Linux操作系统非常强大和灵活,但需要一些时间去学习和熟悉。

通过实验操作,我对Linux操作系统有了更全面和深入的了解,也为以后的学习和工作打下了坚实的基础。

linux实训个人总结8篇

linux实训个人总结8篇

linux实训个人总结8篇篇1一、实训背景与目标本次Linux实训旨在通过实践操作加深我对Linux操作系统的理解与应用能力,提升我在Linux环境下的软件开发和系统管理能力。

在为期XX周的实训过程中,我针对Linux系统的基本配置、软件开发、系统管理等方面进行了系统学习与实践。

二、实训内容1. Linux系统基础操作在实训初期,我重点学习了Linux系统的基本操作,包括文件与目录管理、常用命令的使用、软件包的安装与管理等。

通过实践操作,我掌握了Linux系统下的基本命令和操作技巧,能够熟练进行文件的增删改查以及软件的安装与配置。

2. 软件开发环境的搭建与实践本次实训中,我学习了如何在Linux环境下搭建软件开发环境,包括编译器的安装与配置、代码编辑器的使用、版本控制系统的实践等。

通过搭建开发环境,我能够自主进行软件的开发与调试,提升了我的软件开发能力。

3. 系统管理与维护实践在实训过程中,我还学习了Linux系统的管理与维护知识,包括系统监控、用户管理、进程管理、磁盘管理等。

通过实践操作,我掌握了系统管理的基本技巧,能够独立完成系统的日常管理与维护工作。

三、实训收获与体会1. 深入了解Linux系统架构与运行机制通过本次实训,我深入了解了Linux系统的架构和运行机制,对Linux系统的内核、文件系统、进程管理等方面有了更加清晰的认识。

2. 提升动手实践能力与问题解决能力在实训过程中,我通过大量的实践操作,提升了动手实践能力。

同时,在遇到问题时,我学会了独立思考和解决问题的方法,增强了问题解决能力。

3. 学会团队协作与沟通在实训过程中,我与团队成员紧密合作,共同完成任务。

通过团队协作,我学会了与队友沟通的技巧,提升了团队协作能力。

四、问题与解决方案在实训过程中,我也遇到了一些问题,如软件包安装失败、系统配置出错等。

针对这些问题,我通过查阅相关资料、请教老师同学等方式,找到了解决问题的方法。

同时,我也总结了问题的原因和解决方案,避免类似问题再次发生。

linux实训报告(6个内容)

linux实训报告(6个内容)

Linux网络管理实训报告学生姓名:李含指导教师:刘国成班级: C0841学号: 36信息工程学院2011.11一、Linux安装与配置1、实训目的(1)熟练掌握Linux安装的方法(2)了解Linux的基本配置2、实训内容(1)安装带图形界面的Linux redhat 5.2企业版Linux用户和计算机(2)安装命令行界面Linux redhat 5.2企业版LinuxHLG-B (3)使用ssh putty连接到Linux(4)管理文件及目录3、实训步骤命令行安装RedHat(1)在vmvare安装虚拟机时,在选择操作系统该步骤时,一定选择Linux(2)新建完vitual machine 界面如下(3)打开vmware ,在vmware 光驱中挂载linux RedHat 企业版(4) 从光盘引导启动linux,启动vmare(5) 在命令行中键入text(6) 在光盘检测的页面,用tab 键选择Skip 跳过光盘检测。

(7) 再接下的界面中,直接点击OK 即可。

(8) 语言选择英语(注:这里选择英语,不要选择chinese )(9) 键盘使用习惯,默认即可。

点击OK(11)在弹出的页面中,点击yes。

FAT32,选择默认即可,点击ok。

(13) 在该页面可以看到默认的分区信息,可以根据自己对分区的要求对分区信息进行修改。

(14) 是否给GRUB 开机管理系统设定密码,根据个人安全需要选择。

(15) 在该页面选择使用IPv4 还是IPV6。

我们选择IPV4(16)在该页面,选择动态获得IP 地址,如后续需要指定,我们进行设定。

(17) 为服务器指定名称,方便其他人在网络上查找(18) 为系统指定时区(19) 设定root 密码(20) 安装完成后,需要重新启动机器。

4、实训小结通过对Linux安装与配置的实训,虽然时间很短,但我学到了很多,在与老师和同学们的相处下,我不仅学到了很多理论知识,我还学会了许多做人的道理,在实训期间,我才发现我的理论知识还不是很扎实,遇到的许多问题我都不知所措,还好有老师和同学帮助我,我才得以度过难关,在此,我要感谢那些帮助过我的老师和同学。

linux实习心得(通用3篇)

linux实习心得(通用3篇)

linux实习心得(通用3篇)linux实习心得篇1学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向,学习效率,掌握程度,熟悉操作是日常学习Linux中的三大法宝。

以下是作者学习Linux的一些个人经验,供参考:1,应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。

2,熟悉并掌握安装Linux,安装是学习的前提。

目前较常见的安装方法有二种:硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区,在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。

3,掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。

4,熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件,永中office 20xx增强版安装只需要默认安装即可使用并操作大多与win 系统雷同,打印机的配置和管理,记录光盘等。

5,一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通,把用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。

6,掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。

linux实验报告总结-共10篇

linux实验报告总结-共10篇

∣inux实验报告总结(共10篇)(Linux实验报告汇总)(一)Shell 编程一、实验目的:1)掌握在Linux下的C编程基本方法。

2)掌握shell编程方法。

3)掌握dialog图形化编程方法。

二、实验内容1、编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。

要求记录所使用的命令及结果。

#include stdio.hmain()(printf(Hello world!\n);)2、编写一个C程序并设置其在后台执行,其功能是在一段时间后(可自行设置),在屏幕上显示信息:Time for play!,写出相应的程序、命令及结果。

#include stdio.hmain()(int time=0;printf(请输入等待时间(单位:s):);scanf(%d/&time);sleep(time);printf(Time for play!\n);)3、编写C程序,求1到100之间整数的阶乘和,并对程序进行优化。

写出程序、命令和结果。

#include stdio.hmain()int i;double s = l,sum = 0;for( i= l;i= 100;i++)sum+=s*=i;printf( 1到100之间整数的阶乘和:%f\n,sum);printf( 1到100之间整数的阶乘和:%e\n,sum);}4、编写C程序,根据键盘输入的半径求圆面积,要求在命令行周率(P∣=3∙14,PI=3∙14159,PI=3.14159626 等)进行编使用不同的译,写出程序、命令和结果。

#include stdio.hint main()double r = 0.0 , Area = 0.0;printf(请输入半径:);scanf(%lf, &r);Area = PI * r * r;printf(圆面积:%f∖n, Area);)5、编写shell程序sh.l,完成向用户输出“你好!”的问候语。

linux实习报告2篇_实习报告_

linux实习报告2篇_实习报告_

linux实习报告2篇:通过毕业前的实习巩固自己在大学期间所学的相关知识,锻炼自己实际的工作经验,熟悉linux运维相关知识。

锻炼自己在工作中的人际关系。

让自己在毕业之后能尽快实现从学校到社会的转变。

实习任务:1、巩固大学期间所学的知识。

2、学习互联网企业的运营模式。

3、延伸linux的应用,学习实现系统运维。

4、了解服务器的相关知识,为系统运维打下坚实基础。

实习内容:1、学习redhat linux服务器平台的安装与搭建,并将其应用到现实的工作中,能独立完成批量服务器系统的安装。

2、熟悉公司所用服务器的各个型号,了解服务器的架构知识,学习raid和远程管理卡的相关知识,并能够在服务器中部署。

学习磁盘阵列的设置及其部署知识。

3、在linux下熟悉应用项目的部署,包括apache、tomcat、nginx等服务器的部署,并且把应用项目成功部署在tomcat服务器。

4、熟悉应用项目的负载均衡配置、日志切割、数据备份等一些服务器优化软件和工具,为应用项目做好各个方面的优化。

5、熟悉oracle数据库,了解应用项目所需的oracle数据库,可以在项目中正确部署oracle数据库。

6、深入学习linux系统知识,了解工作的基本原理与工作之中常见的问题,做好系统的运维工作。

实习结论:经过在广州市文渊信息科技有限公司三个月的实习,使我真正认识了什么是linux运维。

学到了大学期间没法学到的知识,并且巩固了大学期间所学的知识。

除此之外,我还了解了it企业的运营模式。

实习体会:能够从事linux运维工作,我感到非常开心,我也非常珍惜这个来之不易的机会,在这段实习期间我学到了很多东西,也见识了很多从来没有见过的企业级的网络设备和服务器。

从企业级服务器,交换机,路由到磁盘阵列和负载均衡设备。

实习的时间虽然不长但是我的收获是无限的。

相信实习的经历必将对我未来的工作产生深远的影响。

我从以下几个方面来分析和总结这段时间的工作。

linux实训报告总结

linux实训报告总结

linux实训报告总结在本次Linux实训中,我深入学习了Linux操作系统的基础知识和相关技能,并通过实际操作和项目练习,提高了自己在Linux环境下的实际应用能力。

以下是我对整个实训过程的总结和反思。

一、实训背景与目的在当今信息技术高速发展的背景下,Linux作为一种优秀的开源操作系统,具有高度的稳定性和安全性,被广泛应用于企事业单位和个人用户。

因此,为了提高我们在Linux操作系统上的开发和维护能力,本次实训旨在通过系统地学习、实践和项目练习,掌握Linux操作系统的基本原理、安装配置、常用命令等知识,以及运维和应用的技巧,为我们今后的工作和学习打下坚实的基础。

二、实训内容与过程1. Linux基础知识学习通过教材、课堂授课和自主学习,我系统地学习了Linux操作系统的发展历史、特点与优势,以及与其他操作系统的对比等内容。

通过这些学习,我对Linux的定位和应用领域有了更清晰的认识。

2. Linux环境搭建与配置在实训过程中,我们首先学会了如何在虚拟机或物理机上安装Linux操作系统,并进行相应的配置。

通过多次实践,我掌握了不同Linux发行版的安装方法和注意事项,并能够根据实际需求选择合适的Linux发行版进行安装。

3. Linux常用命令学习与应用在掌握了Linux环境的安装和配置之后,我们开始学习Linux的常用命令,并通过实际操作加深理解和记忆。

我学会了基本的文件和目录操作命令、文本处理命令、网络命令以及用户和权限管理命令等,这些命令对于后续的Linux应用和运维至关重要。

4. 实验项目练习在实训的最后阶段,我们进行了一系列的实验项目练习,包括搭建Web服务器、配置网络服务、部署应用程序等。

通过这些实验项目,我深入了解了Linux操作系统在不同场景下的应用,并学会了解决实际问题的方法和技巧。

三、实训成果与收获通过本次Linux实训,我取得了一系列的成果和收获:1. 对Linux操作系统有了更深入的理解:通过实际操作和项目练习,我对Linux操作系统的结构、核心原理和基本功能有了更深入的理解,不再局限于理论知识。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录Linux 第一次上机(运行环境RedHat) (1)调试运行CD唱片应用程序 (1)运行过程 (1)心得体会 (3)编写shell脚本,求1到100的和 (3)运行过程 (3)源代码 (4)编写shell脚本,从键盘输入两个数,求这两个数的和 (4)运行过程 (4)源代码 (5)等待特定用户登录,每30秒确认一次 (5)运行过程 (5)源代码 (6)找出系统中当前消耗磁盘容量最大的前10个用户,并向他们发送警告邮件 (6)运行过程 (6)源代码 (8)查找输入文件的路径 (8)运行过程 (8)源代码 (9)Linux 第二次上机(运行环境RedHat) (9)定制自己的ls命令。

提供至少三种带参数的执行方式 (9)运行过程 (9)源代码 (11)调试编译串行口通信程序p6.5.c (16)运行过程 (16)Linux 第三次上机(运行环境RedHat,CentOS) (16)创建一个系统监听守护进程,一旦接收到其他进程发来的信号,马上给出报告 (16)运行过程 (16)源代码 (18)分别利用本地socket套接字和INTENET套接字实现进程间文件传输 (20)本地socket套接字运行过程 (20)本地socket套接字服务器server1.c源代码 (22)本地socket套接字客户端client1.c源代码 (23)INTENET套接字运行过程 (25)INTENET套接字服务器server2.c源代码 (28)INTENET套接字客户端client2.c源代码 (29)感谢与收获 (30)Linux 第一次上机(运行环境RedHat) 调试运行CD唱片应用程序运行过程图表1第一步,使用./CD 命令运行CD脚本图表2进入选项界面图表3增加CD图表4查找CD图表5查询数目图表6退出心得体会通过运行书上的CD唱片应用程序,进一步地了解到shell编程的方法,以及编写程序的思路。

编写shell脚本,求1到100的和运行过程图表7使用./sum1to100运行图表8使用cat sum1to100查看源代码编写shell脚本,从键盘输入两个数,求这两个数的和运行过程图表9使用./sumAandB 运行图表10使用cat sumAandB查看源代码等待特定用户登录,每30秒确认一次运行过程已知特定用户是zzx,我首先让root用户登录并运行程序,可以发现每隔30s提醒一次图表11使用./checkuser运行当我切换到zzx用户,并再次运行程序,可得如下结果图表12使用cat checkuser查看代码找出系统中当前消耗磁盘容量最大的前10个用户,并向他们发送警告邮件运行过程由于权限等问题,我们使用root用户运行程序图表13使用./mymail运行运行完毕后,我们就可以查看邮件了图表14 root用户收到的邮件图表15 zzx用户收到的邮件图表16 t1用户收到的邮件源代码图表17 使用cat命令查看查找输入文件的路径运行过程由于权限的问题,我们使用root用户运行程序图表18 使用./route运行,并按照要求输入文件名源代码图表19 使用cat route查看源代码Linux 第二次上机(运行环境RedHat) 定制自己的ls命令。

提供至少三种带参数的执行方式运行过程图表20 使用./ls 运行不带参数ls图表21使用./ls -l 运行带参数-l 的ls图表22 使用./ls -a运行带参数-a的ls图表23使用./ls -al 运行带参数-al的ls 源代码#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include <errno.h>#include <pwd.h>#include <grp.h>#include <time.h>#include <dirent.h>int do_ls(char *dir,char *filename,int lflag){int n;struct stat buf;char out[100];struct passwd *pw;struct group *gr;struct tm *t;if(lflag == 0){printf("%s\t",filename);return 0;}if(lstat(dir,&buf)<0){fprintf(stderr,"stat error:%s\n",strerror(errno));return -1;}switch(buf.st_mode & S_IFMT) {case S_IFREG:printf("-");break;case S_IFDIR:printf("d");break;case S_IFCHR:printf("c");break;case S_IFBLK:printf("b");break;case S_IFIFO:printf("p");break;case S_IFLNK:printf("l");break;case S_IFSOCK:printf("s");break;}for(n=8;n>=0;n--){if(buf.st_mode&(1<<n)){switch(n%3){case 2:printf("r");break;case 1:printf("w");break;case 0:printf("x");break;default:break;}}else{printf("-");}}printf(" %d",buf.st_nlink);pw = getpwuid(buf.st_uid);printf(" %s",pw->pw_name);gr = getgrgid(buf.st_gid);printf(" %s",gr->gr_name);printf(" %ld",buf.st_size);t = localtime(&buf.st_atime);printf(" %d-%d-%d %d:%d",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min);printf(" %s ",filename);if(S_ISLNK(buf.st_mode)){printf(" -> ");if(readlink(filename,out,100)==-1){//printf("readlink error\n");}printf("%s",out);}printf("\n");return 0;}int ls_prepare(char *w,int aflag,int lflag) {struct stat buf;char name[100];DIR *dir;struct dirent *pdr;if(lstat(w,&buf)<0){fprintf(stderr,"stat error:%s\n",strerror(errno));return -1;}if(S_ISDIR(buf.st_mode)){dir = opendir(w);while ((pdr = readdir(dir))!=NULL){if(aflag==0){if(pdr->d_name[0]=='.')continue;memset(name,0,100);strcpy(name,w);strcat(name,"/");strcat(name,pdr->d_name);do_ls(name,pdr->d_name,lflag);}else{memset(name,0,100);strcpy(name,w);strcat(name,"/");strcat(name,pdr->d_name);do_ls(name,pdr->d_name,lflag);}}closedir(dir);}else{do_ls(w,w,lflag);}return 0;}int main(int argc,char **argv){int aflag =0;int lflag =0;char c;int i;while((c = getopt(argc,argv,"al"))!=-1){switch(c){case 'a':aflag =1;break;case 'l':lflag =1;break;default:break;}}if(argc == optind ){ls_prepare("./",aflag,lflag);}else{for(i=optind;i<argc;i++)ls_prepare(argv[i],aflag,lflag);}printf("\n");return 0;}调试编译串行口通信程序p6.5.c运行过程由于权限问题,我们在root用户下运行程序图表24 使用./mytrunk不带参数运行图表25使用./mytrunk /dev/ttyS0 0带参数运行Linux 第三次上机(运行环境RedHat,CentOS)创建一个系统监听守护进程,一旦接收到其他进程发来的信号,马上给出报告运行过程图表26首先运行守护进程之后查看当前进程图表27可以发现守护进程-jincheng在后台运行,且PPID=1,PID=4085图表28可以发现守护进程向test.txt发送了start图表29向守护进程发送终止信号,终止守护进程图表30可以发现后台运行的守护进程没了图表31可以发现守护进程又向test.txt发送了end图表32具体查看test.txt图表33具体查看test.txt的内容源代码#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <signal.h>#include <fcntl.h>#include <syslog.h>/* Daemonize myself. */int fd1;void sigintHandler(int sig){if(sig==SIGTERM){write(fd1,"end\n",5);exit(0);}}int daemon (int nochdir, int noclose){pid_t pid;pid = fork ();/* In case of fork is error. */if (pid < 0){perror ("fork");return -1;}/* In case of this is parent process. */if (pid != 0)exit (0);/* Become session leader and get pid. */ pid = setsid();if (pid < -1){perror ("setsid");return -1;}/* Change directory to root. */if (! nochdir)chdir ("/");/* File descriptor close. */if (! noclose){int fd;fd = open ("/dev/null", O_RDWR, 0);if (fd != -1){dup2 (fd, STDIN_FILENO);dup2 (fd, STDOUT_FILENO);dup2 (fd, STDERR_FILENO);if (fd > 2)close (fd);}}umask (0027);return 0;}int main(void){fd1=open("test.txt",O_RDWR | O_TRUNC);write(fd1,"start\n",7);daemon(0,0);signal(SIGTERM,sigintHandler);sleep(1000);return 0;}分别利用本地socket套接字和INTENET套接字实现进程间文件传输本地socket套接字运行过程图表34使用./server1运行服务器,显示服务器等待状态图表35当在另外一个终端运行客户端程序时,服务器显示客户连接,并要求输入传输文件名称图表36当服务器输入文件名称server1.c后客户端显示接收信息,不过接收到的文件重定向到test.txt中图表37 server1.c的内容图表38 客户端接收到显示在test.txt的内容,和server1.c的内容比较,完全一致本地socket套接字服务器server1.c源代码#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<sys/un.h>#include<unistd.h>#include<stdlib.h>#include<sys/stat.h>#include<fcntl.h>int main(){int filefd,n; ////////////////char file[100],buf[1024]; ////////////////int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_un server_address;struct sockaddr_un client_address;unlink("server_socket");server_sockfd =socket(AF_UNIX,SOCK_STREAM,0);server_address.sun_family =AF_UNIX;strcpy(server_address.sun_path,"server_socket");server_len =sizeof(server_address);bind(server_sockfd,(struct sockaddr *)&server_address,server_len);listen(server_sockfd,5);while(1){printf("server waiting\n");client_len =sizeof(client_address);client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);if(client_sockfd!=-1){printf("you have a client ,please put the filename to transport!!\n");scanf("%s",file);if((filefd=open(file,O_RDWR))<0){perror("can't find the file");exit(1);}printf("filefd= %d\n",filefd);printf("the file is transported ,please wait...\n");lseek(filefd,0L,0);//每次接受客户机连接,应将用于读的源文件指针移到文件头write(client_sockfd,file,sizeof(file));//传送文件名if((n=read(filefd,buf,sizeof(buf)))>0){write(client_sockfd,buf,n);}printf("you have transport %d bytes and it is end!!\n",n);close(client_sockfd);}close(filefd);}}本地socket套接字客户端client1.c源代码#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<sys/un.h>#include<unistd.h>#include<stdlib.h>#include<sys/stat.h>#include<fcntl.h>int main(){int filefd,n,oldfilefd; /////////////////char file[100],buf[1024];int sockfd;int len;struct sockaddr_un address;int result;sockfd =socket(AF_UNIX, SOCK_STREAM,0);address.sun_family =AF_UNIX;strcpy(address.sun_path,"server_socket");len=sizeof(address);result=connect(sockfd,(struct sockaddr *)&address,len);if(result == -1){perror("oops:client1");exit(1);}if(result!= -1){oldfilefd=open("test.txt",O_RDWR);filefd=dup(oldfilefd);read(sockfd,file,sizeof(file));printf("the filename you receive is:%s\n",file);if((n=read(sockfd,buf,sizeof(buf)))>0){write(filefd,buf,n);}printf("you have received a file which is %d bytes,but the file's context cover the test.txt,so please check into test.txt!!\n",n);close(sockfd);}close(filefd);exit(0);}INTENET套接字运行过程图表39使用./server2运行服务器,显示服务器等待状态图表40当在另外一个终端运行客户端程序时,服务器显示客户连接,并要求输入传输文件名称图表41当服务器输入文件名称server2.c后客户端显示接收信息,不过接收到的文件重定向到test.txt中图表42 server2.c的内容图表43客户端接收到显示在test.txt的内容,和server2.c的内容比较,完全一致INTENET套接字服务器server2.c源代码#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<stdlib.h>#include<sys/stat.h>#include<fcntl.h>int main(){int filefd,n;////////////////char file[100],buf[4096];///////////////////int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;server_sockfd =socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.sin_addr.s_addr=inet_addr("127.0.0.1");server_address.sin_port =9734;server_len=sizeof(server_address);bind(server_sockfd,(struct sockaddr *)&server_address,server_len);listen(server_sockfd,5);while(1){printf("server waiting\n");client_len =sizeof(client_address);client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);if(client_sockfd!=-1){printf("you have a client ,please put the filename to transport!!\n");scanf("%s",file);if((filefd=open(file,O_RDWR))<0){perror("can't find the file");exit(1);}printf("filefd= %d\n",filefd);printf("the file is transported ,please wait...\n");lseek(filefd,0L,0);//每次接受客户机连接,应将用于读的源>文件指针移到文件头write(client_sockfd,file,sizeof(file));//传送文件名if((n=read(filefd,buf,sizeof(buf)))>0){write(client_sockfd,buf,n);}printf("you have transport %d bytes and it is end!!\n",n);close(client_sockfd);}close(filefd);}}INTENET套接字客户端client2.c源代码#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<stdlib.h>#include<sys/stat.h>#include<fcntl.h>int main(){int filefd,n,oldfilefd;////////////////////char file[100],buf[4096];int sockfd;int len;struct sockaddr_in address;int result;sockfd =socket(AF_INET,SOCK_STREAM,0);address.sin_family =AF_INET;address.sin_addr.s_addr =inet_addr("127.0.0.1");address.sin_port =9734;len =sizeof(address);result=connect(sockfd,(struct sockaddr *)&address,len);if(result == -1){perror("oops:client2");exit(1);}if(result!=-1){oldfilefd=open("test.txt",O_RDWR);filefd=dup(oldfilefd);read(sockfd,file,sizeof(file));printf("the filename you receive is:%s\n",file);if((n=read(sockfd,buf,sizeof(buf)))>0){write(filefd,buf,n);}printf("you have received a file which is %d bytes,but the file's context cover the test.txt,so please check into test.txt!!\n",n);close(sockfd);}close(filefd);exit(0);}感谢与收获通过这几次上机实习,使我更加扎实的掌握了有关Linux C编程方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

相关文档
最新文档