《操作系统原理》课程实验指导书_第1页
《操作系统原理》课程实验指导书_第2页
《操作系统原理》课程实验指导书_第3页
《操作系统原理》课程实验指导书_第4页
《操作系统原理》课程实验指导书_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统原理课程实验指导书 (20142015学年第 2 学期)课程名称: 操作系统原理 授课班级: 2012级 教 研 室: 学科基础教研室 任课教师: 史军勇 一、 实验目标操作系统原理课程实验是一门专业实验课,是计算机科学与技术和网络工程专业的学生提升计算机科学知识的必要环节,要求学生通过本实验课程,掌握操作系统基本概念和原理,学会使用系统调用编写高级程序。二、 实验对象本实验开设对象为计算机科学与技术和网络工程专业本科学生,本课程为必修课程。三、 课程简介操作系统原理是计算机专业的核心课程之一。通过本课程的学习和实验,使学生掌握操作系统基本概念和原理,提高自身计算机的应用素质,并且培养

2、学生熟练使用系统调用编程技能,为他们以后的专业学习奠定良好的基础。四、 实验内容实验内容课时实验类型完成情况实验1:Linux操作系统的安装2验证型实验报告实验2:Linux程序开发入门2验证性实验报告实验3:Linux多进程编程开发2设计性实验报告实验4:IPC信号量机制2设计性实验报告实验5:IPC共享存储器机制2设计性实验报告实验6:无名管道通信机制2设计性实验报告实验7:有名管道通信机制2设计性实验报告实验8:Linux多线程编程开发2设计性实验报告实验9:面向连接的网络通信2设计性实验报告实验10:文件读写2设计性实验报告五、 实验条件硬件: 微型计算机软件: Linux操作系统六、

3、 成绩评定办法1实验成绩的评定成绩的评定依据两个方面:考勤成绩和考核成绩,前者占总评的30%,后者占总成绩的70%。考勤内容包括:是否按时到场;是否按进度要求完成任务;是否认真填写实验日记;是否保持实验设备完好无损等。2考核办法要求学生独立完成任务,并结合学生的动手能力,独立分析问题、解决问题的能力和创新精神,成绩分优、良、中、及格和不及格五等。其中,各等级的评判标准为:优秀标准:能独立完成课题要求;能正确回答老师的提问;平时表现好,认真编写实验报告。良好标准:能完成课题要求;基本上能正确回答老师的提问;平时表现较好,认真编写实验报告。中等标准:基本上能完成课题要求;基本能正确回答老师的提问;

4、平时表现较好,能编写实验报告。及格标准:能完成课题的主要要求;平时表现较好,能编写实验报告。不及格标准:上课不认真,缺课迟到多,不能完成课题要求;不认真填写实验、不上交实验报告。目 录实验一 Linux操作系统的安装1一、实验目的1二、实验设备1三、相关准备知识1四、实验步骤1五、实验要求15六、拓展分析及思考15实验二 Linux程序开发入门16一、实验目的16二、实验设备16三、相关准备知识16四、实验步骤16五、实验要求18六、拓展分析及思考18实验三 Linux多进程编程开发19一、实验目的19二、实验设备19三、相关准备知识19四、实验步骤19五、实验要求21六、拓展分析及思考21实

5、验四 IPC信号量机制22一、实验目的22二、实验设备22三、相关准备知识22四、实验步骤22五、实验要求26六、拓展分析及思考26实验五 IPC共享存储器机制27一、实验目的27二、实验设备27三、相关准备知识27四、实验步骤27五、实验要求30六、拓展分析及思考31实验六 Linux多线程编程开发32一、实验目的37二、预备内容37三、相关准备知识37四、实验步骤37五、实验要求38六、拓展分析及思考38实验七 面向连接的网络通信39一、实验目的39二、预备内容39三、相关准备知识39四、实验步骤39五、实验要求44六、拓展分析及思考44实验八 文件读写45一、实验目的45二、实验设备45

6、三、相关准备知识45四、实验步骤45五、实验要求46六、拓展分析及思考46实验一 Linux操作系统的安装一、 实验目的学习使用VMware Workstation创建虚拟机,掌握Linux操作系统的安装。二、 实验设备VMware Workstation 9.0.1、Fedora Linux。三、 相关准备知识操作系统安装。四、 实验步骤获取或制作Linux系统安装光盘。从网站下载Fedora Linux镜像。1. 用VMware Workstation创建一台Linux虚拟机。(1) 执行File-New Virtual Machine,弹出N

7、ew Virtual Machine Wizard对话框。(2) 单击Typical,点击Next按钮。单击I will install the operating system later,单击Next。(3) Guset operating system选择Linux,Version选择Red Hat Linux,单击Next。(4) Virtual machine name命名为Red Hat Linux,Location接受默认值,单击Next。(5) 接受默认值,单击Next。(6) 单击Finish。2. Linux系统安装(1) 插入第一张Linux系统安装光盘,启动机器,选择图

8、形安装界面,进入欢迎界面。(2) 越过光盘校验,进入安装语言选择界面。(3) 键盘配置。(4) 鼠标配置。(5) 安装类型(个人桌面、工作站、服务器、定制)选择定制。(6) 磁盘分区设置(自动、手工分区)选择自动。Linux使用Disk Druid进行分区。(7) 自动分区将删除磁盘上的一些数据。(8) 自动分区后的结果如所示。(9) 引导装载程序(GRUB、LILO)的配置。(10) 网络配置。(11) 防火墙的配置。(12) 附加语言支持。(13) 时区选择。(14) 设置根口令。(15) 验证配置。(16) 软件包选择,包括编辑器和开发工具。(17) 即将安装,提示准备开始安装。(18)

9、 安装完成后,提示创建引导盘。(19) 图形化界面配置。(20) 显示器配置。(21) 定制图形化配置。(22) 最后,完成安装。3. 系统的登录、注销和关闭启动Linux虚拟机,输入根用户名root及口令,即可进入图形界面。五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. Linux操作系统安装的主要步骤有哪些?实验二 Linux程序开发入门一、 实验目的学会文件、目录管理,掌握C程序开发过程。二、

10、实验设备VMware Workstation 9.0.1、Fedora Linux。三、 相关准备知识Linux操作系统命令接口。四、 实验步骤以图形化方式登录Linux系统,在桌面单击鼠标右键,选新建终端。1. 文件、目录管理。(1) pwd 功能:显示用户当前所处的目录的绝对路径。语法:pwd 例如,以root身份登录后,使用命令pwd将显示/root信息。(2) ls 功能:列出目录的内容,类似于DOS下的dir命令。 语法:ls 选项 目录或文件 命令中常用选项为-l,表示以长格式来显示文件的详细信息。每行列出的信息依次是:文件类型与权限、链接数、文件属主、文件属组、文件大小、建立或最

11、近修改的时间、名字等。其中,文件类型与权限由10个字符构成,第一个字符表示文件类型,可以是-(普通文件)、d(目录)、l(符号链接)、b(块设备文件)、c(字符设备文件)、p(管道文件)、f(堆栈文件)。后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写和执行权限。各权限为r(读)、w(写)、x(执行)。例如,root用户登录系统后,使用ls l命令,出现如下结果:-rw-r-r- 1 root root 3256 10月 8 07:08 install.log.syslog

12、drwxr-xr-x r root root 4096 10月 11 22:42 vi(3) cd 功能:改变当前工作目录。 语法:cd 目录名 例如,cd /usr/bin表示切换到/usr/bin目录。目录可以用相对路径,也可以用绝对路径。(4) mkdir功能:创建目录。 语法:mkdir 目录名例如,mkdir /tmp/os将在/tmp目录下创建新目录os,若/tmp不存在,则需要使用-p选项,否则出错。(5) rmdir功能:删除空目录。 语法:rmdir 目录名 例如,rmdir /tmp/os将删除/tmp下的os目录,该命令要求c目录为空。(6) vivi(visual in

13、terface)是Linux系统中最常用的编辑器。vi的工作模式有命令模式、插入模式和末行模式三种。在Linux命令行方式下输入vi命令,运行后首先进入命令模式。在命令模式输入插入命令i,附加命令a,打开命令o,修改命令c等即可进入插入模式,插入模式可以进行文字编辑。插入模式下,按Esc键回到命令模式。在命令模式下,用户按:键进入末行模式,此时,在窗口底部显示“:”作为提示符等待用户输入命令。末行模式下输入w保存当前编辑的文件,输入q系统退出vi,输入q!,则放弃修改退出。末行模式下,按Esc键回到命令模式。(7) cp功能:将给出的文件或目录拷贝到另一文件或目录中,类似MSDOS下的copy

14、命令。语法: cp 源文件或目录 目标文件或目录 例如,cp /root/* /temp实现将root目录下的所有文件拷贝至/tmp。(8) mv功能:移动或者重命名文件。 语法:mv 源文件 目标文件或目录例如: mv a add实现将当前目录下文件a重命名为add。(9) rm功能:删除一个目录中的一个或多个文件或目录。语法:rm 文件名 例如,rm /tmp/my.c将删除/tmp目录下的my.c文件。(10) clear功能:清除屏幕上的信息,清屏后,提示符移动到屏幕左上角。2. C程序开发(1) 使用vi编辑C语言源程序(2) gcc编译和链接(3) 运行程序。(4) make工具的

15、使用。五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. Linux平台程序开发的主要步骤及使用的工具是什么?实验三 Linux多进程编程开发一、 实验目的理解进程及进程实体概念、进程并发执行的异步性、进程树,学会fork系统调用。二、 实验设备VMware Workstation 9.0.1、Fedora Linux。三、 相关准备知识进程概念。四、 实验步骤1. 编写多进程程序#include #in

16、clude int main()pid_t pid;pid=fork();if (pid=0) /等于0是子进程printf(The child:%dn, getpid();else /大于0是父进程printf(The parent:%dn, getpid();fork系统调用创建新的进程,父进程和子进程拥有两份相同的程序映像,父进程中,pid是新创建的子进程号,大于0;而在子进程中,pid的值是0。验证操作:(1) 程序运行时共输出了几条语句。思考:(1) 程序运行时为什么会打印两条语句?2. 写时复制。#include int x;int main()pid_t pid;pid=fork

17、();if (pid=0) /等于0是子进程printf(The child:%dn, getpid();x=3;else /大于0是父进程printf(The parent:%dn, getpid();x=4;printf(x=%dn,x);验证操作:(1) 程序运行共输出了几条语句?(2) x的值输出了几次?思考:(1) x为什么会输出不同的值?3. 并发执行#include int main()int i;double j;pid_t pid;pid=fork();if (pid=0) /等于0是子进程for(i=0;i10;i+)for(j=0;j;j+);/不同平台进行相应调整,如。

18、printf(An);else /大于0是父进程for(i=0;i10;i+)for(j=0;j;j+);/不同平台进行相应调整,如。printf(Bn);验证操作:(1) 多次运行程序,每次程序运行输出的结果一样吗?思考:(1) 程序每次运行,为什么会输出不同的结果?4. 编写服务进程/linux平台#include int main()pid_t pid;pid=fork();if (pid=0) /等于0是子进程for(;);else /大于0是父进程;验证操作:(1) 程序运行完后,是否还存在相关进程?(2) 注销,再登录系统,程序运行后留下的进程是否还存在?思考:(1) 用户注销后,

19、为什么程序运行后留下的进程还存在?五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考(1) 查看进程,如:ps e | grep test(2) 终止进程,如:kill pid(3) 注销,如:logout实验四 IPC信号量机制一、 实验目的熟悉IPC软件包,理解其中的信号量机制,学会semget、semctl、semop系统调用。二、 实验设备VMware Workstation 9.0.1、Fedora

20、 Linux。三、 相关准备知识信号量概念。四、 实验步骤4. 初始化程序init.c/创建信号量#include #include #include #include /* 信号量外部标识符 */ #define KEY (1492) int main() int id;/* 信号量内部标识符*/union semunint val;struct semid_ds *buf;ushort *array;argument;argument.val=0;/信号量初始值;/创建信号量集,1代表信号量对象中包含的信号量个数。id=semget(KEY, 1, 0666|IPC_CREAT);if(i

21、d0)printf(Unable to obtain semaphore.n);exit(0);/*id代表信号量对象,0代表信号量对象中的第0个信号量,SETVAL代表用argument参数中val成员的值来设定信号量的值。*/if(semctl(id, 0, SETVAL, argument)0)printf(Cannot set semaphore value.n);elseprintf(Semaphore %d initialized. n, KEY);5. 程序sema.c/程序sema.c#include #include #include #include /*信号量外部标识符*

22、/#define KEY (1492)int main() int id; /*信号量内部标识符*/struct sembuf operations1;int retval;/获取信号量对象id=semget(KEY, 1, 0666);if(id0)printf(Program sema cannot find semaphore, exiting.n);exit(0);/a程序要完成的任务printf(This is the A task.n);/设置operations结构体字段/指明信号量对象中的哪一个信号量operations0.sem_num=0;/指示在信号量上进行加1操作ope

23、rations0.sem_op=1;/*0代表使得操作系统跟踪当前进程对这个信号量的修改情况,如果这个进程在没有释放该信号量的情况下终止,操作系统将自动释放该进程持有的信号量。*/operations0.sem_flg=0;/执行V操作,operations定义了操作的序列,1指明操作序列的长度retval = semop(id, operations, 1);if(retval=0)printf(Successful V-operation by program sema.n);elseprintf(sema: V-operation did not succeed.n);6. 程序semb

24、.c/程序semb.c#include #include #include #include /*信号量外部标识符*/#define KEY (1492)int main()int id; /*信号量内部标识符*/struct sembuf operations1;int retval;/获取信号量对象id=semget(KEY, 1, 0666);if(id0)printf(Program semb cannot find semaphore, exiting. n);exit(0); /设置operations结构体字段/指明信号量对象中的哪一个信号量operations0.sem_num

25、=0;/指示在信号量上进行减1操作operations0.sem_op=-1;/*0代表使得操作系统跟踪当前进程对这个信号量的修改情况,如果这个进程在没有释放该信号量的情况下终止,操作系统将自动释放该进程持有的信号量。*/operations0.sem_flg=0;/执行P操作,operations定义了操作的序列,1指明操作序列的长度retval=semop(id, operations, 1);/在此阻塞if(retval=0)printf(Successful P-operation by program semb.n);elseprintf(semb: P-operation did

26、not succeed.n);/b程序要完成的任务printf(This is the B task.n);7. 删除信号量程序delsem.c/创建信号量#include #include #include #include /* 信号量外部标识符 */ #define KEY (1492) int main() int id;/* 信号量内部标识符*/union semunint val;struct semid_ds *buf;ushort *array;argument;/获取信号量对象id=semget(KEY, 1, 0666);if(id0)printf(Program semb

27、 cannot find semaphore, exiting. n);exit(0); /*id代表信号量对象,0代表信号量对象中的第0个信号量,IPC_RMID代表删除信号量操作。*/if(semctl(id, 0, IPC_RMID, argument)0)printf(Cannot delete semaphore.n);elseprintf(Semaphore %d deleted. n, KEY);验证操作:(1) 先运行init程序;再在后台运行semb程序,看semb是否能够结束?在前台运行sema程序,检查b程序是否运行结束?(2) 查看1492信号量。(3) 删除1492信

28、号量。思考:程序b先运行,为什么直到程序a运行后,才能结束?五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. 后台运行程序,如:./b &;2. ipc软件包对象查看,如:ipcs;3. ipc软件包对象删除,如:ipcrm;实验五 IPC共享存储器机制一、 实验目的熟悉IPC软件包共享存储器机制,理解其中的共享存储器机制,学会shmget、shmat系统调用。二、 实验设备VMware Worksta

29、tion 9.0.1、Fedora Linux。三、 相关准备知识进程间通信。四、 实验步骤1. 头文件shm.h/定义共享存储区外部标识符及结构#define KEY 1492struct bufferdouble x;2. 初始化程序init.c/创建共享存储区#include #include #include #include #include shm.hint main() int shmid;struct buffer *retaddr;/创建共享存储区shmid=shmget(KEY, sizeof(struct buffer), IPC_CREAT|0660);if(shmid

30、= -1) printf(Creating shared memory failed.n);exit(0);else printf(Creating shared memory succeed.n);printf(Shared memory key:%d.n,KEY);printf(Shared memory id:%d.n,shmid);/映射共享存储区retaddr=(struct buffer *)shmat(shmid,0,0);if (int)retaddr= -1) printf(reflecting shared memory error.n);exit(0);/x初始值为0re

31、taddr-x=0;3. 加法程序add.c#include #include #include #include #include shm.hint main()int shmid;double i;struct buffer *retaddr;/获得共享存储区shmid=shmget(KEY, sizeof(struct buffer), 0666);if (shmid= -1) printf(Getting shared memory error. n);exit(0);/将共享存储区映射到进程自己的内存空间retaddr =(struct buffer *)shmat(shmid, 0

32、,0);if (int)retaddr = -1) printf(Reflecting shared memory error. n);exit(0);for(i=1;ix+; /for结束4. 减法程序subtraction.c#include #include #include #include #include shm.hint main()int shmid;double i;struct buffer *retaddr;/获得共享内存shmid=shmget(KEY, sizeof(struct buffer), 0666);if (shmid= -1) printf(Getting

33、 shared memory error. n);exit(0);/将共享内存映射到进程自己的内存空间retaddr =(struct buffer *)shmat(shmid, 0,0);if (int)retaddr = -1) printf(Reflecting shared memory error. n);exit(0);for(i=1;ix-;/for结束5. 输出程序print.c#include #include #include #include #include shm.hint main()int shmid;struct buffer *retaddr;/获得共享内存s

34、hmid=shmget(KEY, sizeof(struct buffer), 0666);if (shmid= -1) printf(Getting shared memory error. n);exit(0);/将共享内存映射到进程自己的内存空间retaddr =(struct buffer *)shmat(shmid, 0,0);if (int)retaddr = -1) printf(Reflecting shared memory error. n);exit(0);printf(x=%fn,retaddr-x);exit(1);验证操作:(1) 编译并多次运行程序,检查x的结果。

35、(2) 修改加法和减法程序中的i值,将i的值改小些,例如100,检查。思考:(1) x的结果对吗?每次运行结果为什么不一样?(2) 如何利用信号量机制解决?x的结果?五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. 采用make工具编译程序;all:init add subtraction printinit:init.c shm.hgcc init.c -o initadd:add.c shm.hgc

36、c add.c -o addsubtraction:subtraction.c shm.hgcc subtraction.c -o subtractionprint:print.c shm.hgcc print.c -o printclean:rm -f init add subtraction print2. 采用shell脚本运行程序;#!/bin/sh./initecho run add./add &echo run subtraction./subtraction &echo wait.FoundLine=ps -e | grep add | wc -lwhile test $Foun

37、dLine -ne 0doFoundLine=ps -e | grep add | wc -ldone echo add overFoundLine=ps -e | grep subtraction | wc -lwhile test $FoundLine -ne 0doFoundLine=ps -e | grep subtraction | wc -ldone echo subtraction overecho -n the result:./printecho delete shared memory 1492.ipcrm -M 1492实验六 无名管道通信机制一、 实验目的熟悉Linux

38、系统管道通信机制,理解无名管道和有名管道应用方法,学会pipe、read、write、mknod、fopen、fgets、fputs、fclose系统调用。二、 实验设备VMware Workstation 9.0.1、Fedora Linux。三、 相关准备知识进程间通信。四、 实验步骤Pipe系统调用用于创建无名管道,创建后返回两个句柄,如图所示,Fd0句柄用于读数据,fd1句柄用于写数据。无名管道没有外部标识符,只能在父子进程间使用。若父进程向子进程发送数据,则发送前要将fd0句柄关闭,而子进程要将fd1句柄关闭。/unamedpipe.c程序#include #include #inc

39、lude #define MAXLINE 256int main()int n,fd2;pid_t pid;char lineMAXLINE;if (pipe(fd)0)close(fd0);printf(Parent process send:hello world.n);write(fd1,hello world.n,14);wait();close(fd1);验证操作:(1) 子进程是否收到了父进程发送的消息?思考:(1) 无名管道为什么只能用于父子进程之间?五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指

40、导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. 程序编译,如gcc unnamedpipe.c o unnamedpipe;实验七 有名管道通信机制一、 实验目的熟悉Linux系统管道通信机制,理解无名管道和有名管道应用方法,学会pipe、read、write、mknod、fopen、fgets、fputs、fclose系统调用。二、 实验环境VMware Workstation 9.0.1、Fedora Linux。三、 相关准备知识进程间通信。四、 实验内容1. 接收端receiver.c#include #include

41、#include #include #include #define FIFO_FILE fifo.tmpint main()FILE *fp;char readbuf80;mknod(FIFO_FILE,S_IFIFO|0666,0);while(1)fp=fopen(FIFO_FILE,r);fgets(readbuf,80,fp);printf(Received string:%sn,readbuf);fclose(fp);return 0;2. 发送端sender.c#include #include #define FIFO_FILE fifo.tmpint main(int arg

42、c,char *argv)FILE *fp;if (argc!=2)printf(USAGE:sender string n);exit(1);if(fp=fopen(FIFO_FILE,w)=NULL)perror(fopen);exit(1);fputs(argv1,fp);fclose(fp);return 0;验证操作:(1) 接收端是否能够正确接收到发送端的数据?思考:(1) 有名管道为什么不受父子进程编程模型限制。(2) 多个程序是否可以同时向有名管道发送数据?注:有名管道操作只能用于ext2文件系统,在FAT等文件系统上无法正常运行。五、 实验要求1. 学生必须认真阅读实验指导书

43、,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. 程序后台运行,如:./server &;实验八 Linux多线程编程开发一、 实验目的熟悉Pthread线程软件包。二、 预备内容线程,pthread_create、pthread_join系统调用。三、 相关准备知识线程概念。四、 实验步骤/多线程应用程序thread_test.c#include #include void thread(void)int i;double j;for(i=0;i

44、10;i+)for(j=0;j;j+);printf(This is a pthread.n);int main(void)pthread_t id;int i,ret;double j;ret=pthread_create(&id,NULL,(void *) thread,NULL);if(ret!=0)printf (Create pthread error!n);exit (1);for(i=0;i10;i+)for(j=0;j;j+);printf(This is the main process.n);pthread_join(id,NULL); /在未分离状态,主线程必需等待子线程

45、终止,否则会有BUG。return (0);验证操作:(1) 多次运行程序,查看程序的运行结果?思考:(1) 程序运行每次得到结果为什么不同?五、 实验要求1. 学生必须认真阅读实验指导书,了解实验的目的,明确本次实验中所用实验程序。2. 学生必须认真听取老师对本实训的指导讲授,掌握基本知识。3. 写出实验报告,内容包括:实验目的、基本原理、实验步骤等内容。六、 拓展分析及思考1. 编译程序,如:gcc thread_test.c -lpthread -o thread_test;实验九 面向连接的网络通信一、 实验目的熟悉Linux Socket端口面向连接通信机制,实现服务器端与客户端通信

46、。二、 预备内容TCP/IP协议,socket端口。三、 相关准备知识socket编程。四、 实验步骤1. 服务器端程序/server.c服务器端程序#include #include #include #include #include #include #include #define SERVER_PORT 20000 / 服务器端口号#define LENGTH_OF_LISTEN_QUEUE 10 /等待处理连接请求的队列长度#define BUFFER_SIZE 255#define WELCOME_MESSAGE welcome to connect the server. /服务器发送消息struct INDListint num;struct sockaddr_in INDAddr;long timestamp;struct INDList *next;head; /接收到的客户机信息队列int main(int argc, char *argv)int servfd,clifd;struct sockaddr_in servadd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论