linux课程设计汇本报告
Linux 系统课程设计报告

Linux 系统课程设计报告专业班级:学号:姓名:同组成员:2016年6月2日星期四序论实验要求实验目的了解Linux内核源代码的目录结构及各目录的相关内容。
了解Linux内核各配置选项内容和作用。
掌握Linux内核配置文件的作用。
掌握Linux内核的编译过程。
掌握将新增内核代码加入到Linux内核结构中的方法。
实验指引尽管目前Linux 2.6版本内核已经增加了很多对ARM体系甚至是S3C2440 CPU 的支持,但仍然需要对内核作一些小的修改来适应我们的开发板,并且需要重新配置、编译和重新生成新的内核映像。
本实验从软硬件准备到下载到开发板等一系列连贯的操作来进行嵌入式Linux内核的移植。
本实验的内核版本为2.6.29.1。
第一章Linux内核基础知识1.1Linux版本Linux主要的版本定义为“[主].[次].[发布].[修改]”的样式,次版本为奇数表示此版本为开发中版本,次版本为偶数表示此版本为稳定版本。
Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中:VERSION = 2PATCHLEVEL = 6SUBLEVEL = 29EXTRA VERSION = .1其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如 2.4、2.5、2.6等,稳定版本的德主版本号用偶数表示(比如2.6的内核),开发中的版本号用奇数表示(比如2.5),它是下一个稳定版本内核的前身。
“SUBLEVEL”称为次版本号,它不分奇偶,顺序递增,每隔1~2个月发布一个稳定版本。
“EXTRAVERSION”称为扩展版本号,它不分奇偶,顺序递增,每周发布几次扩展本版号。
1.2什么是标准内核按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在/维护和获取的内核,实际上它也有平台属性的。
这些linux内核并不总是适用于所有linux支持的体系结构。
Linux程序设计课程设计 (2)

Linux程序设计课程设计一、课程设计背景Linux是一种自由和开放源代码的类Unix操作系统,已成为Web服务器设备和许多嵌入式系统的首选操作系统。
Linux程序设计课程是为了培养学生Linux操作系统和程序操作的能力,让学生掌握Linux下的程序设计和管理。
二、课程设计目的本课程的目的是让学生能够掌握Linux操作系统下的程序设计和管理技能,让学生能够在Linux环境下编写并运行程序,学生能够了解Linux常用的程序设计语言,熟悉常用程序设计工具和命令。
三、课程设计内容1. Linux安装学生需要了解Linux的安装流程及注意事项。
在了解了Linux操作系统安装的基本知识后,学生需要根据课程要求在虚拟机环境中进行Linux的安装练习。
课程需要覆盖CentOS、Ubuntu和Fedora等常见Linux发行版的安装和配置方法。
2. Linux基础学生需要掌握Linux系统的基本操作,理解Linux文件系统组织结构和常用命令的使用方法。
课程需要覆盖Linux文件系统常用命令、文件读写、编辑器使用、文件管理等操作。
3. Shell编程在掌握Linux基础操作后,学生需要了解Shell脚本的基本概念和编程方法。
学生需要掌握Shell脚本的语法和用法,独立完成Shell脚本的编写。
课程需要覆盖Shell脚本的基本语法、流程控制、函数定义以及输入输出等内容。
4. 常用编程语言及工具本课程需要让学生了解在Linux环境下常用的编程语言和开发工具,主要包括如下几种语言和工具:1.C/C++编程:学生需要了解C/C++编程语言在Linux环境下的编译和运行方法,学生需要编写C/C++程序并在Linux环境下运行;2.Python编程:学生需要了解Python编程语言的语法和用法,在Linux环境下编写Python程序;3.Git版本控制工具:学生需要掌握Git的基本使用方法,了解如何在Linux环境下使用Git进行版本控制和协作开发;4.GNU开发工具集:学生需要掌握GNU开发工具集的基本用法,包括GCC编译器、Makefile、GDB调试器等。
linux课程设计报告总结

linux课程设计报告总结本次课程设计报告总结的重点在于介绍我们团队的Linux课程设计,并分享我们在此过程中面对的挑战,以及我们如何克服这些挑战。
我们的团队选取了一个通过搭建一个基本的Linux服务器来加深Linux相关知识的课程设计。
通过完成该课程设计,学生将熟悉Linux服务器的基本概念,学习系统使用、管理、安全等方面的知识,并在此过程中积累实践经验。
我们编写了针对初学者的详细教程,包括安装Linux服务器、添加用户、设置密码、安装和配置Apache、MySQL和PHP等常用软件,还介绍了基本的服务器安全工具,以保护服务器和敏感数据。
除此之外,我们还为学生提供了案例分析,帮助学生了解如何解决特定的问题。
我们也提供了在线讨论板,以便学生与其他学生和教师进行知识交流和问题解决。
在课程设计的过程中,我们面临了一些挑战。
首先,我们需要确保所有的指令和步骤都是清晰和易于理解的,这样学生才能顺利地完成课程设计。
其次,我们需要始终跟进更新,并定期对教程进行修订,以确保它们是最新和最有效的。
最后,我们需要创造一个积极的学习环境,鼓励学生沟通和互相帮助。
我们克服了这些挑战,也从中受益。
我们学会了如何编写易于理解的指令和步骤,以及如何使用实例来增强学生的学习效果。
我们也学会了如何与学校IT部门合作,以获得服务器和其他必需的资源,以及如何运用各种工具来优化课程设计。
总的来说,我们的课程设计提供了一个实用性强的Linux基础课程,能够为初学者提供有用的经验和知识。
通过团队合作,我们克服了许多挑战,并为自己积累了价值重大的经验。
我们期待将来有机会进一步完善和拓展我们的Linux课程设计,并探索更广泛的学科领域。
linux课程设计报告

目录1.什么是Linux22.Linux系统的特性21.开放性22.多用户23.多任务24.良好的用户界面25.设备独立性26.提供了丰富的网络功能37.可靠的系统安全38.良好的可移植性33.常用操作命令31、ping命令32、ifconfig命令43.ftp命令44、netstat命令44.Samba配置55.ftp服务器配置66.shell编程6总结9参考文献 (9)前言今天,自由软件Linux正越来越显示出其咄咄逼人的气势。
在传统由微软的windowsNT、Nowell 的Netware和UNIX占据的网络操作系统市场上,Linux正日益成为一个令人生畏的对手。
据估计现在全球已有800万Linux用户,有29%的互联网服务器采用了Linux系统,这一数字超过微软WindowsNT6个百分点。
在1998年Linux将保持25%的年增长率,超过其他操作系统增长的总和。
随着IBM、Intel、Oracle、CA、网景为代表的众多IT巨头们纷纷宣布支持Linux、那些曾经对Linux 不屑一顾的著名软件公司的老板们不得不回过头来重新审视这个有Internet上的一群业余1.什么是LinuxLinux是一套免费使用和自由传播的UNIX操作系统,它主要用于基于Intel系列CPU的计算机上。
这个系统是由世界各地的成千上万的程序员设计和实现的。
其目的是建立不受任何商品化软件的制约的,全世界都能自由使用的UNIX兼容产品。
Linux的出现,最早开始于一位名叫Linux Torvalds 的计算机爱好者,当时他是芬兰赫尔辛基大学的学生。
他的目的是想要设计一个代替Minix(Minix 是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有UNIX操作系统的全部功能,因而开始了Linux出行的设计。
Linux课程设计报告

《Linux课程设计》设计题目:shell 编程实现用户信息管理专业:软件工程指导教师:蔡照鹏王斌斌班级:学号:姓名:同组人:计算机科学与工程学院Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中。
Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。
严格来讲,Linux这个词本身只表示Linux 内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
Linux得名于天才程序员林纳斯·托瓦兹。
Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。
以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX 和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的UNIX工具软件、应用程序和网络协议。
它支持32位和64位硬件。
Linux 继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
它主要用于基于Intel x86系列CPU的计算机上。
这个系统是由全世界各地的成千上万的程序员设计和实现的。
其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
一、系统环境 (1)1.1硬件环境 (1)1.2软件环境 (1)二、设计目的和要求 (1)三、课程设计内容 (2)四、总体设计 (2)4.1部分功能模块流程图 (2)4.2总体功能模块图 (4)五、详细设计 (5)5.1模块功能说明 (5)5.2系统中shell主要命令说明 (5)六、调试与测试 (7)6.1调试方法 (7)6.2测试结果的分析与讨论 (11)七、设计中遇到的问题及解决方法 (12)八、源程序清单 (13)九、总结 (21)参考文献 (22)一、系统环境1.1硬件环境CPU:Intel(R) Core(TM)********************内存:2.93 GHz,2.00GB软件:VC6.0、VMware Workstation、CentOS1.2软件环境操作系统:Windows 7、 Linux编程工具、编程语言: shell编程语言Shell编程语言简介:shell 是操作系统的最外层。
Linux程序设计课程设计报告

Linux程序设计课程设计报告2010-2011学年第二学期设计题目:基于GNOME的菜单构件学号:姓名:成绩评定:日期:目录一、设计任务书 (1)1.1 题目与要求 (1)1.2 本程序涉及的知识点 (1)二、关键技术、程序难点与解决方案 (2)三、功能设计 (3)3.1、程序算法 (3)3.2、主要功能流程图 (5)3.3、具体功能说明图 (5)四、程序设计主要代码 (6)五、Linux程序设计课设总结 (7)一、设计任务书1.1、题目与要求题目:编写一个能够包含菜单构件的GNOME程序要求:顶层菜单包含“文件”和“编辑”两项,其中在文件的子菜单中包含“新建”和“关于”,编辑的子菜单中包含“输入”和“输入”当我们单击文件菜单的子菜单“新建”时,在屏幕上输出“Good Luck !”;当单击“关于”时,在屏幕上输出“Linux C”;当我们单击“输入”时,从终端读入一个字符串(字符串的长可是由编程者自定);当单击“输出”时,从终端输出一我们刚刚读入的字符串,如果没有读入字符串,那么就提出“请先输入字符串:”之后输入字符串,再执行输出。
1.2、本程序涉及的知识点本程序涉及的知识点是首先要弄明白什么是GNOME,在GNOME中的程序设计中,需要知道菜单是如何定义、调用,之后根据对于GNOME的了解再将菜单创建出来,定义函数将菜单的功能实现。
当程序编写完成进行编译、连接时千万不能忘记连接GNOME类库。
GnomeApp构件是GNOME应用程序的基本构件,这个构件能够包含菜单、工具栏和数据的主要实现窗口。
我们可以利用gnome_app_new函数来创建一个新的构件,再调用gnome_app_create_menu或gnome_app_create_toolbar函数就能够实现菜单的功能。
此外,在gnome的程序设计中类库的应用也是非常重要的,libgnome和libgnomeui是任何GNOME编程中都要用到的两个主要库,用来独立于任何特定的GUI工具箱。
linux课程设计报告总结
linux课程设计报告总结Linux课程设计报告总结一、前言Linux是一个开源的操作系统,被广泛应用于服务器、嵌入式设备、移动设备等领域。
在计算机科学和工程领域,Linux已成为必备的技能之一。
因此,在大学的计算机科学专业中,Linux作为一门课程也越来越受到重视。
本文将对一门Linux课程的设计报告进行总结,主要包括课程目标、课程内容、教学方法、学生评价等方面。
二、课程目标本门Linux课程的主要目标是让学生掌握Linux操作系统的基本知识和技能,包括:1. 熟练掌握Linux操作系统的基本概念和原理;2. 掌握Linux操作系统的常用命令和操作;3. 掌握Linux下的应用开发和系统管理技能;4. 能够使用Linux操作系统进行网络配置和管理;5. 能够解决Linux系统的常见问题和故障。
三、课程内容本门Linux课程的内容主要包括以下几个方面:1. Linux基本概念和原理:介绍Linux操作系统的发展历史、特点、体系结构等基本概念和原理。
2. Linux操作系统安装和配置:介绍Linux操作系统的安装和配置过程,包括硬件要求、分区、文件系统、驱动程序等。
3. Linux基本命令和操作:介绍Linux下的基本命令和操作,包括文件管理、进程管理、用户管理、权限管理等。
4. Linux应用开发和系统管理:介绍Linux下的应用开发和系统管理技能,包括Shell编程、网络编程、系统管理工具等。
5. Linux网络配置和管理:介绍Linux下的网络配置和管理技能,包括网络协议、网络配置、网络管理等。
6. Linux系统故障和修复:介绍Linux系统的常见问题和故障,以及相应的修复方法。
四、教学方法本门Linux课程的教学方法主要采用理论教学和实践教学相结合的方式,包括:1. 理论教学:通过讲授Linux的基本概念、原理和命令等知识,让学生掌握Linux操作系统的基本知识。
2. 实践教学:通过实践操作,让学生掌握Linux操作系统的应用开发和系统管理技能,以及网络配置和管理技能。
Linux课程设计实验报告
pdata->activity_mode = !pdata->activity_mode; gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar)); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar),0.00); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "0.00"); gtk_container_add (GTK_CONTAINER (align), pdata->pbar); gtk_widget_show (pdata->pbar); /* 加一个定时器(timer), 以更新进度条 的值 */ pdata->timer = gtk_timeout_add (100, progress_timeout, pdata); separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 0); gtk_widget_show (separator); /* 行数、 列数、 同质性(homogeneous) */ table = gtk_table_new (2, 2, FALSE); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0); gtk_widget_show (table);
3. 通过系统调用实现文件拷贝
5
a.程序说明: 要在 linux 下实现系统调用,首先修改内核中的三个文件,分别是 unistd.h,sys.c 和 syscalltable.s(这个是 2.6 版本和 2.4 版本的区别所在,2.4 版本要改的文件是 entry.s), 然后需要重新编译内核,具体步骤如下: Make clean Make bzImage Make modules Make modules_install Make install 最后一步最为关键,2.6 版本不需要手动修改 grub,只需要执行 make install 就会自动 修改 grub,然后只要在启动时选择新内核即可,完全不需要手工操作. 此外还需要一个测试文件,文件拷贝的代码当然是原先写在内核里,这里是 sys.c 文 件.编译后的内核下通过系统调用同样实现了程序一文件拷贝的效果. b.程序源码 测试程序: while(!feof(f1)) #include <stdio.h> { #include <stdlib.h> #include <string.h> s=fgetc(f1); if(s==EOF) break; fputc(s,f2); int mysyscall(char *f1,char *f2) } { sys_close(f1); sys_close(f2); printk("Copy complete!!\n"); f1=sys_open(f1,"r"); } f2=sys_open(f2,"w"); int s=0; Sys.c 里的文件拷贝代码:
Linux课程设计报告书
Linux操作系统与程序设计课程设计A报告书姓名:学号:班级:专业:指导老师:提交日期:2013年06月14日1、实验项目目的《Linux操作系统课程设计B》是一门在课程《Linux操作系统与程序设计B》后独立开设的实验课程。
这一门实验课程的开设目的是为了通过学生独立完成一个基于Linux平台的较大型应用程序,巩固课堂上学到的Linux 平台上的编程规范、技术和技巧,培养学生的编写较大型程序的能力和提高学生综合应用素质。
本课程设计实验主要围绕Linux平台上主流的基础技术展开,这些技术包括:Linux的进程、线程通信和同步技术;socket网络通信技术等,这些技术可以集中体现并应用在并发程序设计中。
通过并发程序的设计与开发,培养学生底层软件开发的能力,并为将来从事UNIX/Linux平台开发、嵌入式开发等相对高端的软件开发工作打下基础。
2、实验项目的功能及模块划分本软件是一个Linux下基于socket的聊天室程序,能让局域网内的用户通过该软件进行简单的文字通信。
在此基础上增加了聊天室成员之间的发送私聊信息;当新的成员加入后能自动收取最近一段时间内的聊天上下文;用户能够查看历史聊天记录;软件界面基于Qt实现,图形化界面方便用户操作。
主要模块划分:服务端:数据包发送和接受模块,聊天记录数据库读写模块,数据包处理模块,聊天记录查询模块客户端:数据包发送和接受模块,数据包处理模块,聊天记录查询模块,用户界面与展示模块3、设计与实现本系统采用CS架构,服务端采用固定的端口通信,每个客户端动态设置端口。
客户端启动后向服务端告知自己所使用的端口号,以便可以双向通信,同时服务器负责为每个客户端分配一个唯一的ID(服务器的ID为1)客户端和服务端以及客户端和客户端之间采用约定的数据格式进行通信,以便接收方可以正确的解析命令和数据。
数据包通用格式定义如下 #define MAX_UDP_SIZE 1000 struct udp_packet{ int type; int senderId; long size;char content[MAX_UDP_SIZE]; };type : 表示该数据包的类型,直接决定content 字段的含义 senderId :该数据包的发送者的ID , size:整个数据包的数据长度content:数据包的内容,其数据格式由type 决定。
LINUX操作系统-课程设计报告.doc
xxx软件工程职业学院课程设计报告2015-2016学年度第一学期题目:LINUX操作系统姓名:xxxx班级:网络xxx系部:计算机学院指导教师:xxx日期:2015年11月21日Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多cpu的操作系统。
它能运行主要的UNIX工具软件、应用程序和网络协议。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
它主要用于基于Intel x86系列CPU的计算机上。
这个系统是由全世界各地的成千上万的程序员设计和实现的。
其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
通过这次课程设计,提高了我们对Linux各子系统服务配置的动手能力和实践操作综合应用的能力。
关键字:DHCP服务、Samba服务器、DNS服务、WWW服务、FTP服务、telnet摘要 (2)目录 (3)DHCP服务 (4)一、需求分析: (4)二、步骤与结果: (4)三、拓扑图 (5)四、总结: (5)DNS (6)一.需求分析 (6)二.配置步骤 (6)三.拓扑图 (8)四.总结 (8)Samba (8)一.需求分析 (8)二.步骤与结果 (9)三.总结 (11)WWW (11)一.需求分析 (11)二.步骤与结果 (11)三.总结 (17)Telnet (17)一.需求分析 (17)二.步骤与结果 (17)三.总结 (19)FTP (19)一需求分析 (19)二步骤与结果 (20)三.总结 (23)参考文献 (23)DHCP服务一、需求分析:由于公司内部很多 Notebook计算机使用的场合!所以 Notebook 在使用上,当设定为DHCP client 的时候,那么只要它连接上的网域里面有一部可以上网的 DHCP服务器,那部notebook 也就可以连接上 Internet 了!网域内数量相当的多时:另外一个情况就是网域内计算机数量相当庞大时,大到您没有办法一个一个的进行说明来设定他们自己的网络参数,这个时候为了省麻烦,还是架设DHCP 来的方便。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件1141《Linux操作系统》结业大作业题
题目:
基于UDP多播技术的群聊服务器及其客户端
要求:
1.运行在Linux系统平台上
2.C语言编程
3.基于TCP/IP socket编程
4.基于UDP多播技术
5.每一个多播组成员针对多播组全体成员发送消息并接收来自每一个多播组成员的消息,至少要求三个多播组成员。
6.(尽量)使用多线程技术
7.当多个多播组成员同时发送消息时要避免冲突,保证信息的正确与不丢失。
8.第12周五上午12点以前交(电子版发到指定)程序源码(加注释)及其运行结果截屏图。
9.源码及其运行结果不得与人雷同。
课程报告容及格式要求:
2.1. 程序源码及其简要注释;
2.2. 调试过程中出现的问题及相应解决办法;
2.3. 总体运行情况与结果分析讨论
2.4 上交结果:课程报告和程序源码。
2.1. 程序源码及其简要注释
服务器的源代码如下:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include<pthread.h>
#define PORT 1234
#define MAXDATASIZE 100
#define BUFLEN 255
int main(int argc,char *argv[])
{
struct ARG *arg;
struct sockaddr_in peeraddr;
int sockfd,on=1;
int num,i;
char msg[BUFLEN+1];
pthread_t tid;
socklen_t len;
char buf[MAXDATASIZE];
/*要求运行时输入ip地址和端口号*/
if(argc!=3)
{
printf("usage:%s<ip address><port>\n",argv[0]);
exit(0);
}
/*套接字的设置*/
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
fprintf(stderr,"socket creating error in tserv.c\n");
exit(1);
}
/*设置广播方式SO_BROADCAST */
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));
memset(&peeraddr,0,sizeof(struct sockaddr_in));
peeraddr.sin_family=AF_INET;
if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0)
{
printf("Wrong dest IP address\n");
exit(0);
}
peeraddr.sin_port=htons(atoi(argv[2]));
len=sizeof(peeraddr);
/*服务器无限循环接收消息的代码*/
while(1)
{
num = recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)&peeraddr,&len);//服务器接收消息
if(num<0)
{
perror("recvfrom() error\n");
exit(1);
}
buf[num]='\0';//设置字符串数组容结束
/*发送客户端传来的消息*/
sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&peeraddr,len);
}
close(sockfd);
}
客户端的源代码如下:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 1234
#define MAXDATASIZE 100
#define BUFLEN 255
int main(int argc,char *argv[])
{
struct sockaddr_in localaddr;
int sockfd,n,num;
char buf[MAXDATASIZE],sendbuf[MAXDATASIZE];
pid_t pid;
char msg[BUFLEN+1];
/*运行客户端时输入端口号*/
if(argc!=2)
{
printf("usage:%s<port>\n",argv[0]);
exit(0);
}
/*设置套接字*/
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
fprintf(stderr,"socket creating error in tcli.c\n");
exit(1);
}
memset(&localaddr,0,sizeof(struct sockaddr_in));
/*设置端口号*/
localaddr.sin_port=htons(atoi(argv[1]));
localaddr.sin_addr.s_addr=htonl(INADDR_ANY);
int opt=SO_REUSEADDR;
/*设置套接字选项为SO_REUSEADDR ,让端口释放后可立即使用*/ setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt) );
if(bind(sockfd,(struct sockaddr *)&localaddr,sizeof(struct sockaddr_in))<0)
{
fprintf(stderr,"bind error in tcli.c\n");
exit(2);
}
/*客户端无限循环发送消息并接收消息,当用户输入Exit的时候退出。
但是这里有一点没做好,就是客户端必须先发送才能接收,我在使用多线程的过程中遇到了困难*/
while(1)
{
/*提示输入消息,5秒后发送给服务器*/
printf("send your message:(send \"Exit\" exit)");
scanf("%s",sendbuf);
sleep(5);
sendto(sockfd,sendbuf,strlen(sendbuf),0,(struct sockaddr *)&localaddr,sizeof(localaddr));
socklen_t len;
len=sizeof(localaddr);
while(1)
{ /*接收服务器广播的消息*/
if((num=recvfrom(sockfd,buf,MAXDATASIZE,0,(struct
sockaddr *)&localaddr,&len))==-1)
{
printf("recvfrom() error\n");
exit(1);
}
buf[num]='\0';
printf("Recive Message:%s.\n",buf);sleep(2);
break;
}
/*比较用户输入的消息与”Exit是否一样,一样就break退出”*/ if(strcmp(buf,"Exit")==0)
break;
}
close(sockfd);
}
显示如下图1:
图1
评分标准:
i.基本完成程序,有多播概念,但编译、执行有错,有课程报告——及格
ii.基本完成程序,有多播概念,编译通过,但执行结果有错,有课程报告——中iii.较好完成程序,执行结果基本正确,有课程报告——良
iv.圆满完成程序,执行结果完全正确,课程报告正确——优
v.源程序、执行程序和课程报告有缺者——不及格。