基于Linux网络编程课程设计报告
- 格式:doc
- 大小:473.50 KB
- 文档页数:51
Linux操作系统课程设计题目:构建综合网络服务器姓名:**班级:**系部:**指导教师:**日期:2012 年10 月30 日[摘要]随着Internet的日益普及,在网络上学会配置网络服务器,有着非常重要的意义。
综合网络服务器基于LINUX操作系统上,进行服务器与客户端之间的连接,实现服务器为客户端提供服务。
其实训内容包括linux服务器搭建与测试:dhcp(主机IP的动态获取)服务器搭建与应用、dns(域名解析)服务器搭建与应用、ftp(能够实现网络文件传输的上传和下载)服务器搭建与应用、www(能够实现基于域名的虚拟机访问)服务器搭建与应用、网络访问等等。
综合网络服务器的功能强大,操作简单,扩展性强,稳定性高;方便不同操作系统平台之间的移植;网站最大限度地实现易维护性和易操作性。
Linux是一套免费使用和自由传播的操作系统,以其稳定性和灵活性而著称。
完善的内置网络是Linux的一大特点。
Linux为用户提供了完善的、强大的网络功能。
作为一种网络操作系统,它在网络服务器上得到了广泛的应用。
[关键词] :域名访问、Linux、网络服务器、服务器配置目录一、课程设计目的: (4)二、课程设计的实验环境: (4)三、课程设计的方法与步骤: (4)3.1 配置DHCP服务器原理与步骤 (4)3.2 配置ftp服务器原理与步骤 (5)3.3 配置DNS服务器原理与步骤 (6)3.4 配置HTTP服务器原理与步骤 (6)四、课程设计的实施过程: (7)(一)DHCP配置 (7)(二)DNS配置 (8)(三)FTP配置 (9)(四)HTTP配置 (9)五、课程设计的结果 (11)(一)DHCP配置结果 (11)(二)DNS配置结果 (11)(三)FTP配置结果 (11)(四)HTTP配置结果 (12)六、心得体会 (13)参考文献 (13)一、课程设计目的:本次实训是为了配合本学期所开设的课程《Linux操作系统》而设置的,目的是让学生在实训的过程中掌握Linux各种服务器的安装、配置与管理。
基于linux网络课程设计一、课程目标知识目标:1. 理解Linux操作系统的基本网络配置与原理;2. 掌握Linux环境下网络服务的搭建与维护;3. 学会使用Linux命令行进行网络诊断与故障排除;4. 了解Linux网络安全的基本概念与防护措施。
技能目标:1. 能够独立完成Linux服务器的网络配置;2. 能够运用所学知识解决实际网络问题;3. 能够编写简单的网络服务配置脚本,提高工作效率;4. 能够对Linux网络安全进行初步的评估与防护。
情感态度价值观目标:1. 培养学生对网络技术学习的兴趣,提高自主学习的积极性;2. 培养学生的团队协作意识,提升沟通与表达能力;3. 增强学生的网络安全意识,树立正确的网络道德观念;4. 激发学生对开源文化的认同感,培养分享与贡献的精神。
本课程针对高年级学生,结合学科特点,注重理论与实践相结合,提高学生的实际操作能力。
课程以实际应用为导向,充分考虑学生的认知水平和学习兴趣,培养具备实际解决问题能力的网络技术人才。
通过本课程的学习,使学生能够掌握Linux网络相关知识,为今后的职业生涯奠定基础。
二、教学内容1. Linux网络基础- 网络协议与网络模型- Linux网络配置命令与工具- 网络设备与接口配置2. Linux网络服务配置与管理- 常见网络服务原理与安装- Apache、Nginx服务器配置- DNS、DHCP服务搭建与维护3. 网络诊断与故障排除- 网络诊断工具使用方法- 常见网络故障分析与解决- 网络监控与性能优化4. Linux网络安全- 网络安全基本概念与策略- 防火墙配置与管理- 入侵检测与防护5. 实践与案例分析- Linux网络配置实操- 网络服务搭建与应用- 网络故障排查实际案例- 网络安全防护演练教学内容根据课程目标进行科学性和系统性组织,涵盖Linux网络基础知识、网络服务配置与管理、网络诊断与故障排除、网络安全等方面。
教学大纲明确教学内容安排和进度,结合教材章节,确保学生扎实掌握所学知识,提高实际操作能力。
基于linux的网络课程设计一、课程目标知识目标:1. 掌握Linux操作系统的基本原理和常用命令;2. 了解Linux网络配置与网络安全相关知识;3. 理解TCP/IP协议栈的基本原理和常用网络协议;4. 学会使用Linux下的网络工具进行网络诊断和故障排除。
技能目标:1. 能够独立完成Linux操作系统的安装与配置;2. 能够熟练运用Linux命令进行网络设置和维护;3. 能够运用所学知识解决实际网络问题,提高网络维护能力;4. 能够在设计网络课程时,结合Linux系统特点进行创新实践。
情感态度价值观目标:1. 培养学生对Linux操作系统的兴趣,激发自主学习动力;2. 培养学生具备团队协作精神,能够在网络课程设计中相互支持、共同进步;3. 增强学生的网络安全意识,培养良好的网络道德观念;4. 培养学生勇于探索、创新的精神,为我国网络技术发展贡献力量。
课程性质:本课程为计算机网络技术专业的选修课程,以Linux操作系统为基础,结合网络知识,培养学生实际操作能力和网络素养。
学生特点:学生具备一定的计算机和网络基础,对Linux操作系统有一定了解,但对网络配置和故障排除等方面的知识掌握不足。
教学要求:结合学生特点,注重实践操作,以案例教学为主,让学生在动手实践中掌握知识,提高技能。
同时,关注学生的情感态度价值观培养,使他们在学习过程中形成良好的学习习惯和团队合作精神。
通过分解课程目标,为教学设计和评估提供具体依据。
二、教学内容1. Linux操作系统概述:介绍Linux的发展历史、特点及在服务器和嵌入式领域的应用。
教材章节:第一章 Linux操作系统概述2. Linux基本操作与命令:讲解Linux文件系统结构、常用命令及其使用方法。
教材章节:第二章 Linux基本操作与命令3. Linux网络配置与管理:介绍Linux下的网络配置文件、网络命令及网络安全知识。
教材章节:第三章 Linux网络配置与管理4. TCP/IP协议栈基础:讲解TCP/IP协议栈的原理、结构和常用网络协议。
Linux网络编程课程设计报告Linux网络编程课程设计报告第一章题目分析 (1)第二章设计文档 (3)第三章关键技术分析 (7)第四章系统界面 (13)第五章源代码 (14)Linux网络编程设计第一章题目分析实现一个并发、IO复用的守护进程时间服务器,要求当客户端向服务器发送“what’s time?”字符串时,服务器回应当时的系统时间字符串。
守护进程是在后台运行不受终端控制的进程(如输入、输出等),一般的网络服务都是以守护进程的方式运行。
守护进程脱离终端的主要原因有两点:用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。
(如其他用户登录该终端后,以前的守护进程的错误信息不应出现)由终端上的一些键所产生的信号(如中断信号),不应对以前从该终端上启动的任何守护进程造成影响。
要注意守护进程与后台运行程序(即加&启动的程序)的区别。
在系统启动时由系统初始化脚本启动,这些脚本一般在/etc或/etc/rc开头的目录。
如inet超级服务器,web服务器等;许多网络服务器是由inet超级服务器启动的,如Telnetd、FTP等;cron守护进程按一定的规则执行一些程序,由它启动的程序也以守护进程的方式运行。
守护进程可以在用户终端上启动,这是测试守护进程或重新启动守护进程常用的方法。
由于守护进程没有控制终端,在发生问题时它要用一些其它方式以输出消息。
可以通过向文件里写数据来输出消息,但这样不好管理。
(因为每一个守护进程要对应一个文件)。
一般用syslogd守护进程来登记出错信息。
用户守护进程登记出错信息创建一个Unix域数据报套接口,并向syslogd 守护进程绑定的路径名发送我们的消息,我们就能从自己的守护进程向syslogd发送登记信息。
可以创建一个UDP套接口,将日志消息发到回馈地址及端口号514(syslog 服务使用的端口号);更简单的方法是利用syslog函数。
syslog函数是输出这些消息的标准方式,它将消息发往syslogd守护进程。
linux网络编程课程设计一、课程目标知识目标:1. 学生理解Linux操作系统的网络编程基本原理,掌握套接字编程的基础知识。
2. 学生能够描述TCP/IP协议栈的基本工作流程,并运用到实际的编程中。
3. 学生掌握常用的网络通信函数和数据结构,能够实现基础的客户端和服务器端通信程序。
技能目标:1. 学生能够编写简单的基于TCP和UDP协议的网络程序,具备解决实际网络编程问题的能力。
2. 学生通过动手实践,提升问题解决能力和程序调试技巧,能够分析和修正网络编程中的常见错误。
3. 学生通过小组合作,培养团队协作能力,学会在团队中有效沟通与分工。
情感态度价值观目标:1. 学生培养对网络编程的兴趣,激发深入学习计算机网络的热情。
2. 学生在学习过程中,培养严谨的科学态度,遵循编程规范,养成良好的编程习惯。
3. 学生通过学习网络编程,认识到网络技术对社会的重要性,增强网络安全意识和社会责任感。
课程性质分析:本课程为高中信息技术学科选修课,旨在帮助学生掌握Linux网络编程的基础知识和技能,培养实际编程能力。
学生特点分析:高中学生已具备一定的计算机操作和编程基础,对网络编程有一定的好奇心,但需注重理论与实践相结合,提高学习的趣味性和实用性。
教学要求:1. 注重理论与实践相结合,让学生在实际操作中掌握网络编程知识。
2. 结合实例进行教学,引导学生运用所学知识解决实际问题。
3. 激发学生的兴趣,注重培养学生的学习主动性和团队合作精神。
二、教学内容1. Linux网络编程基础- 网络编程概念与套接字编程原理- Linux网络编程环境搭建- 常用网络数据结构和函数介绍2. TCP/IP协议栈原理与应用- TCP/IP协议栈的分层结构- TCP与UDP协议的特点与应用场景- 套接字编程中的TCP/UDP协议使用3. 网络编程实践- 编写简单的TCP客户端与服务器端程序- 编写简单的UDP客户端与服务器端程序- 网络程序调试与错误处理4. 网络编程进阶- 多客户端服务器模型- 非阻塞IO与多路复用IO- 网络安全基础及编程实践5. 综合项目实践- 设计并实现一个简易聊天室- 设计并实现一个文件传输系统- 小组合作,完成一个综合网络编程项目教学内容安排与进度:第一周:Linux网络编程基础第二周:TCP/IP协议栈原理与应用第三周:网络编程实践(一)第四周:网络编程实践(二)第五周:网络编程进阶第六周:综合项目实践教材关联:教学内容与教材《Linux网络编程》相关章节紧密关联,确保学生能够结合教材深入理解网络编程知识。
linux编程实验报告Linux编程实验报告一、引言Linux操作系统是一种自由开源的操作系统,具有稳定性、安全性和灵活性等优点,被广泛应用于服务器、嵌入式系统和个人电脑等领域。
本实验旨在通过编程实践,探索Linux编程的基本概念和技术,并通过实验结果验证相关理论。
二、实验目的本实验的主要目的是通过编写C语言程序,理解Linux系统调用的原理和使用方法。
具体目标包括:1. 熟悉Linux系统调用的概念和基本原理;2. 掌握Linux系统调用的常用函数及其使用方法;3. 理解文件操作、进程管理和网络编程等方面的基本知识。
三、实验环境本实验使用的实验环境为Ubuntu 20.04 LTS操作系统。
在该系统上,我们可以使用gcc编译器编译C语言程序,并通过终端执行程序。
四、实验内容1. 文件操作文件操作是Linux编程中的重要内容之一。
通过使用系统调用函数,我们可以实现对文件的读写、创建和删除等操作。
在本实验中,我们编写了一个简单的文件复制程序,实现将一个文件的内容复制到另一个文件中。
2. 进程管理进程是Linux系统中的基本执行单元。
通过创建和管理进程,我们可以实现并发执行和多任务处理等功能。
在本实验中,我们编写了一个简单的多进程程序,实现同时执行多个任务的效果。
3. 网络编程网络编程是Linux编程中的一个重要领域,它涉及到网络通信、套接字编程和网络协议等内容。
在本实验中,我们编写了一个简单的客户端-服务器程序,实现了基于TCP协议的网络通信。
五、实验结果与分析通过实验,我们成功编写了文件复制程序、多进程程序和客户端-服务器程序,并在实验环境中运行和测试了这些程序。
实验结果表明,我们对Linux编程的基本概念和技术有了初步的理解和掌握。
在文件复制程序中,我们使用了open、read和write等系统调用函数,实现了将源文件的内容复制到目标文件中。
通过实验测试,我们发现该程序能够正确地复制文件,保持了源文件的内容和结构。
*****《软件综合开发案例教程》课程设计报告课程设计题目小组成员:**,**,**,**任课讲师和助教:**,**2014年 10 月 29 日摘要这个课程设计整体采用在linux平台下,在同一局域网内实现聊天功能。
整体框架主要分为服务端和客户端两个部分,设置好ip和端口号,在Linux下编译和调试两主大块程序,实现服务端和客户端的连接,然后以服务端作为中继转实现客户端之间的通信。
使用socket网络编程采用TCP/IP协议保证连接可靠,并在项目管理中采用linux流行的gcc和makefile编译,提高了编译和调试效率,加快了项目的完成速度。
本次设计的聊天工具采用字符串命令行的方式进行通信,主要实现了五个功能:用户之间一对一的聊天、编辑、换行、用户之间聊天记录保存、聊天记录调取。
经过测试,程序运行可靠,能满足在linux中实现网络聊天的要求。
关键词 linux,socket,gedit,服务端,客户端,网络编程AbstractThe course design of the overall use in the Linux platform, within the same LAN chat functions.Overall framework consists of server and client two parts, set up IP and port number, two main large program under Linux compiling and debugging, to connect server and client, and then turn to the server as a relay to realize the communication between the e the socket network programming using TCP/IP protocol to ensure reliable connect, and using Linux popular GCC in project management and compile a makefile, improve the efficiency of the compiling and debugging, to speed up the completion of the project.The design way of chat tool USES the string on the command line to communicate, has realized the five main functions: the one-on-one chat between users, editing, line feeds, chat records, chat records obtained between users.After testing, the program runs, reliable and can meet the requirements of the implementation in the Linux network chat. Keywords Linux, socket, gedit, server, client, network programming目录摘要 (II)Abstract (II)第一章绪论.......................................................................................... - 1 -1.1、背景......................................................................................... - 1 -1.2、网络聊天的发展状况 ............................................................ - 1 -1.3、Linux系统............................................................................ - 2 -1.3.1 、Linux的简介............................................................... - 2 -1.3.2 、Linux发展历程........................................................... - 3 - 第二章系统应用技术 ......................................................................... - 4 -2.1 、socket概念及功能 ............................................................... - 4 -2.2、socket类型 ........................................................................... - 5 -2.3 、socket函数 ........................................................................... - 5 -2.3.1 、API功能介绍.............................................................. - 5 -2.3.2、套接口地址结构 ........................................................... - 7 -2.3.3、基本转换函数 ............................................................... - 8 -2.3.4、socket编程流程 ............................................................ - 8 -2.4、TCP/IP 协议......................................................................... - 10 -2.4.1、协议概述 ..................................................................... - 10 -2.4.2、TCP/IP层次结构 ........................................................ - 10 - 第三章需求分析 ............................................................................... - 13 -3.1 、功能需求 ............................................................................ - 13 -3.2、性能需求 .............................................................................. - 13 -3.3 、模块划分 ............................................................................ - 13 -3.3.1、界面需求设计 ........................................................... - 14 -3.3.2 、通信需求 ................................................................... - 14 -3.3.3 、数据存储 ................................................................... - 14 -3.4、系统总流程图 ...................................................................... - 14 - 第四章系统测试 ............................................................................... - 15 -4.1、测试说明 .............................................................................. - 15 -4.2、模块测试 .............................................................................. - 15 -4.3、测试结果分析 ...................................................................... - 16 - 第五章设计和实现 ........................................................................... - 16 -5.1、窗体的设计 .......................................................................... - 16 -5.2、实现服务器与客户端的连接 .............................................. - 17 -5.3、聊天功能 .............................................................................. - 18 -5.4、编辑功能的实现 .................................................................. - 19 -5.5、换行功能的实现 .................................................................. - 20 -5.6、数据库的创建与连接 .......................................................... - 21 -5.6.1、MySQL数据库的简介 ............................................... - 21 -5.6.2、MYSQL环境搭建 ...................................................... - 21 -5.7 、显示聊天记录 .................................................................... - 23 -结论................................................................................................ - 25 - 致谢................................................................................................ - 26 -第一章绪论1.1、背景随着Internet的快速发展和普及,网络已经遍布世界各个角落。
网络程序设计课程设计报告1目录第1章课程设计目的、要求 (1)1.1课程设计目的 (1)1.2实验要求 (1)1.3实验内容 (1)1.4小组分工 (1)第2章课程设计分析及内容 (2)2.1所用知识点 (2)2.1.1套接字函数 (2)2.1.2守护进程 (2)2.1.3 I/O复用 (2)2.1.4 并发服务器 (3)第3章课程设计的实现 (4)3.1 程序运行步骤 (4)3.2 客户端主要函数 (5)3.2.1 socket()函数 (5)3.2.2 connect()函数 (5)3.3服务端函数 (6)3.3.1 send函数和recv函数 (6)3.3.2 close()函数 (6)3.3.3 select函数 (7)3.4 创建守护进程 (7)心得体会 (8)附录一系统界面 (9)附录二程序代码.......................................................................... 错误!未定义书签。
第1章课程设计目的、要求1.1课程设计目的1.熟练掌握所学到的网络套接字函数。
2.掌握UDP和TCP编程关键函数。
3.掌握多进程或多线程编程。
4.掌握使用select实现I/O复用。
5.掌握守护进程的编写。
1.2实验要求1.认真阅读和掌握本实验的相关的知识点。
2.上机编写并运行程序。
1.3实验内容实现一个并发、IO复用的守护进程时间服务器,要求当客户端向服务器发送“what’s time?”字符串时,服务器回应当时的系统时间字符串。
1.4小组分工第2章课程设计分析及内容2.1所用知识点2.1.1套接字函数①客户端所用函数:socket()函数、connect()函数、send()函数、recv()函数,close()函数。
②服务器端所用函数:bind()函数、socket()函数、listen()函数、accept()函数、send()函数、accept()函数、recv()函数、close()函数。
linux课程设计报告一、课程目标知识目标:1. 理解Linux操作系统的基本概念,掌握其发展历程和特点;2. 学会使用Linux命令行进行基本操作,如文件管理、目录切换、文本编辑等;3. 了解Linux系统的文件权限和用户管理,能够进行简单的系统维护;4. 掌握Linux下软件的安装与配置方法。
技能目标:1. 培养学生熟练运用Linux命令行进行日常操作的能力;2. 培养学生解决Linux系统常见问题的能力;3. 培养学生独立完成Linux软件安装与配置的能力;4. 提高学生的实际操作能力和团队协作能力。
情感态度价值观目标:1. 激发学生对Linux操作系统的兴趣,培养其学习热情和主动性;2. 培养学生严谨、细致的学习态度,树立良好的信息安全意识;3. 增强学生的团队协作精神,培养其尊重他人、善于沟通的品格;4. 引导学生认识到开源软件的价值,培养其创新精神和共享意识。
课程性质:本课程为实践性较强的课程,以学生动手操作为主,结合理论讲解,培养学生实际应用能力。
学生特点:学生具备一定的计算机操作基础,对Linux操作系统有一定了解,但实践经验不足。
教学要求:注重理论与实践相结合,强调实际操作能力的培养,以学生为主体,教师为主导,充分调动学生的积极性与主动性。
通过本课程的学习,使学生能够掌握Linux操作系统的基本知识,具备实际应用能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. Linux操作系统概述- Linux发展历程- Linux系统特点- 常见Linux发行版介绍2. Linux命令行操作- 基本命令:ls、cd、pwd、mkdir、rm、cp、mv等- 文件和目录权限管理:chmod、chown、umask等- 文本处理命令:cat、grep、sort、uniq等- 压缩和解压缩命令:tar、gzip、bzip2等3. Linux系统管理- 用户和组管理:useradd、usermod、userdel、groupadd等- 软件包管理:rpm、yum、apt等- 系统启动与关闭:init、systemctl等- 网络配置:ifconfig、ip、route等4. Linux软件安装与配置- 源码编译安装:configure、make、make install- 包管理器安装:rpm、deb等- 常用软件安装与配置:Apache、MySQL、PHP等5. 实践操作与案例- 常见系统问题排查与解决- Linux下文件共享与权限设置- Linux下Web服务器搭建- Linux下数据库服务器搭建教学内容安排与进度:第1周:Linux操作系统概述第2周:Linux命令行操作第3周:Linux系统管理第4周:Linux软件安装与配置第5周:实践操作与案例本教学内容根据课程目标,结合教材章节进行选择和组织,确保内容的科学性和系统性。
2014-2015学年第二学期LINUX网络编程考查作业设计题目:《Linux 网络编程课程设计》指导老师:李相海专业:网络工程(网络安全与攻防)班级:13级网安四班姓名:朱晓杰学号:1315925022Linux网络编程课程设计一丶实验目的:通过本教学环节,让学生在Linux环境下,利用socket编程常用函数及socket 编程的一般规则和客户/服务器模型,编写网络应用程序,能够应用网络间通信,进一步熟悉和巩固Linux环境下网络程序设计的相关技术和方法,培养网络编程思维方式。
1.掌握面向连接的套接字连接的综合操作。
2.实现不同计算机之间的文本、文件等类型数据的传送。
二丶实验内容:编写一个以客户机/服务器模式工作的程序,实现TCP文件传输功能。
服务器端等待客户端的请求,客户端向服务器端发送请求上传文件,待服务器响应后,将文件内容通过TCP方式传送给服务器端。
要求:在客户端建立一个文件test,并在里面写入本程序的服务器端代码;在客户机端读取文件test内容,传送到服务器;服务器端将文件保存在/tmp目录下。
三丶实验步骤:服务器端(1)创建套接字(socket)(2)将套接字绑定到一个本地地址和端口上(bind)(3)将套接字设为监听模式,准备接收客户端请求(listen)(4)等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)(5)用返回的套接字和客户端进行通信(send/recv)(6)返回,等待另一个客户请求。
(7)关闭套接字。
客户端(1)创建套接字(socket)(2)向服务器发出连接请求(connect)(3)和服务器端进行通信(send/recv)(4)关闭套接字四丶主要算法和程序清单程序编码:#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <fcntl.h>#include <string.h>#define PORT 5678//宏定义端口号int main(){int sockfd,newsockfd,fd;struct sockaddr_in addr;int addr_len = sizeof(struct sockaddr_in);char msgbuffer[256];char tmp_file[128], file[128];ssize_t bytes;if ((sockfd = socket(AF_INET,SOCK_STREAM,0))<0) {perror("create socket");return 0;}bzero(&addr,sizeof(addr));addr.sin_family =AF_INET;addr.sin_port = htons(PORT);addr.sin_addr.s_addr = htonl(INADDR_ANY);if(bind(sockfd,(struct sockaddr*)&addr,sizeof(addr))<0){perror("bind socket");return 0;}if(listen(sockfd,3)<0){perror("listen");return 0;}if((newsockfd = accept (sockfd,(struct sockaddr*)&addr,&addr_len))<0) {perror("accept");close(sockfd);return 0;}while(1){bytes = read(newsockfd, msgbuffer, sizeof(msgbuffer));if (bytes<=0)break;if (!strncmp(msgbuffer, "exit", 4))break;else if (!strncmp(msgbuffer, "filename", 8)){sscanf(msgbuffer, "filename:%s", tmp_file);printf("客户端发送过来的文件%s\n", tmp_file);sprintf(file, "/tmp/%s", tmp_file);fd = open(file, O_CREAT|O_WRONLY);if (fd>0){printf("打开文件%s 成功!\n", file);strcpy(msgbuffer, "accepted");write(newsockfd, msgbuffer, sizeof(msgbuffer));}}elsewrite(fd, msgbuffer, bytes);}printf("%s 输出成功!\n", file);if (fd>0)close(fd);close(newsockfd);close(sockfd);return 0;}客户端:#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#define PORT 5678int main(int argc, char *argv[]){int sockfd,fd;struct sockaddr_in addr;int addr_len = sizeof(struct sockaddr_in);char msgbuffer[256];ssize_t bytes;if (argc<2){printf("请输入文件名!\n");return 0;}if ((sockfd = socket(AF_INET,SOCK_STREAM,0))<0) {perror("create socket");return 0;}bzero(&addr,sizeof(addr));addr.sin_family =AF_INET;addr.sin_port = htons(PORT);addr.sin_addr.s_addr = htonl(INADDR_ANY);if (connect(sockfd, (struct sockaddr*)&addr, addr_len)!=0) {perror("connect fail");close(sockfd);return 0;}sprintf(msgbuffer, "文件名:%s", argv[1]);write(sockfd, msgbuffer, strlen(msgbuffer));read(sockfd, msgbuffer, sizeof(msgbuffer));if (!strncmp(msgbuffer, "accepted", 8)){fd = open(argv[1], O_RDONLY);printf("文件%s 打开!\n", argv[1]);if (fd>0){while((bytes=read(fd, msgbuffer, sizeof(msgbuffer))>0)){write(sockfd, msgbuffer, bytes);}close(fd);printf("成功传输到服务器端!\n");}}strcpy(msgbuffer, "exit");write(sockfd, msgbuffer, strlen(msgbuffer));close(sockfd);//关闭套接字return 0;}#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <fcntl.h>#include <string.h>#define PORT 5678//宏定义端口号int main(){int sockfd,newsockfd,fd;struct sockaddr_in addr;int addr_len = sizeof(struct sockaddr_in);char msgbuffer[256];char tmp_file[128], file[128];ssize_t bytes;if ((sockfd = socket(AF_INET,SOCK_STREAM,0))<0){perror("create socket");return 0;}bzero(&addr,sizeof(addr));addr.sin_family =AF_INET;addr.sin_port = htons(PORT);addr.sin_addr.s_addr = htonl(INADDR_ANY);if(bind(sockfd,(struct sockaddr*)&addr,sizeof(addr))<0){perror("bind socket");return 0;}if(listen(sockfd,3)<0){perror("listen");return 0;}if((newsockfd = accept (sockfd,(struct sockaddr*)&addr,&addr_len))<0) {perror("accept");close(sockfd);return 0;}while(1){bytes = read(newsockfd, msgbuffer, sizeof(msgbuffer));if (bytes<=0)break;if (!strncmp(msgbuffer, "exit", 4))break;else if (!strncmp(msgbuffer, "filename", 8)){sscanf(msgbuffer, "filename:%s", tmp_file);printf("客户端发送过来的文件%s\n", tmp_file);sprintf(file, "/tmp/%s", tmp_file);fd = open(file, O_CREAT|O_WRONLY);if (fd>0){printf("打开文件%s 成功!\n", file);strcpy(msgbuffer, "accepted");write(newsockfd, msgbuffer, sizeof(msgbuffer));}}elsewrite(fd, msgbuffer, bytes);}printf("%s 输出成功!\n", file);if (fd>0)close(fd);close(newsockfd);close(sockfd);return 0;}五丶实验结果:客户端[root@bogon ~]# vim c.c[root@bogon ~]# gcc -o c c.c[root@bogon ~]# ./cinput file name please! [root@bogon ~]# ./c test文件test 打开![root@bogon ~]# cat test服务器端[root@bogon ~]# vim s.c [root@bogon ~]# gcc -o s s.c [root@bogon ~]# ./s客户端发送过来的文件test 打开文件test成功!\/tmp/test wrote ok!六丶参考文献:《Linux C程序设计》七丶开发环境:kali-linux-1.0.6-amd64。
linux网络编程课程设计《Linux网络编程》课程设计班级:姓名:指导老师:一、设计背景Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。
通过这次课程设计能更好的学习网络编程知识和掌握LINUX平台上应用程序设计开发的过程,将大学四年所学知识综合运用,为未来的工作学习打下基础。
二、设计目的1、学习epoll 跟FTP被动模式2、掌握linux基本命令,例如ls、cd、login;3、学会如何编译、运行三、环境要求1、centos 64位操作系统2、gcc编译器四、设计原理4.1客户端客户端程序的主要任务有以下3个:(1)、分析用户输入的命令。
(2)、根据命令向服务器发出请求(3)、接受服务器返回请求的结果客户端为用户提供了3种命令:(1)、get:从服务器下载文件(2)、list:列出客户端当前目录的内容(3)、quit离开服务器端(1)、分析请求代码。
(2)、根据请求代码做相应的处理(3)、等待返回结果或者应答信息五、软件测试结果六、部分主代码#include ""int main(int argc, char *argv[]){int sock_listen, sock_control, port, pid;if (argc != 2) {printf("usage: ./ftserve port\n");exit(0);}port = atoi(argv[1]);uth", "r");if (fd == NULL) {perror("file not found");exit(1);}while ((num_read = getline(&line, &len, fd)) != -1) { memset(buf, 0, MAXSIZE);strcpy(buf, line);pch = strtok (buf," ");strcpy(username, pch);if (pch != NULL) {pch = strtok (NULL, " ");strcpy(password, pch);}// remove end of line and whitespacetrimstr(password, (int)strlen(password));if ((strcmp(user,username)==0) &&(strcmp(pass,password)==0)) { auth = 1;break;}}free(line);fclose(fd);return auth;}/*** Log in connected client*/int ftserve_login(int sock_control){char buf[MAXSIZE];char user[MAXSIZE];char pass[MAXSIZE];memset(user, 0, MAXSIZE);memset(pass, 0, MAXSIZE);memset(buf, 0, MAXSIZE);// Wait to recieve usernameif ( (recv_data(sock_control, buf, sizeof(buf)) ) == -1) { perror("recv error\n");exit(1);}int i = 5;int n = 0;while (buf[i] != 0)user[n++] = buf[i++];// tell client we're ready for passwordsend_response(sock_control, 331);// Wait to recieve passwordmemset(buf, 0, MAXSIZE);if ( (recv_data(sock_control, buf, sizeof(buf)) ) == -1) {perror("recv error\n");exit(1);}i = 5;n = 0;while (buf[i] != 0) {pass[n++] = buf[i++];}return (ftserve_check_user(user, pass));}/*** Wait for command from client and* send response* Returns response code*/int ftserve_recv_cmd(int sock_control, char*cmd, char*arg){int rc = 200;char buffer[MAXSIZE];memset(buffer, 0, MAXSIZE);memset(cmd, 0, 5);memset(arg, 0, MAXSIZE);// Wait to recieve commandif ((recv_data(sock_control, buffer, sizeof(buffer)) ) == -1) { perror("recv error\n");return -1;}strncpy(cmd, buffer, 4);char *tmp = buffer + 5;strcpy(arg, tmp);if (strcmp(cmd, "QUIT")==0) {rc = 221;} else if((strcmp(cmd, "USER")==0) || (strcmp(cmd, "PASS")==0) ||(strcmp(cmd, "LIST")==0) || (strcmp(cmd, "RETR")==0)) { rc = 200;} else { //invalid commandrc = 502;}send_response(sock_control, rc);return rc;}/*** Child process handles connection to client*/void ftserve_process(int sock_control){int sock_data;char cmd[5];char arg[MAXSIZE];// Send welcome messagesend_response(sock_control, 220);// Authenticate userif (ftserve_login(sock_control) == 1) {send_response(sock_control, 230);} else {send_response(sock_control, 430);exit(0);}while (1) {// Wait for commandint rc = ftserve_recv_cmd(sock_control, cmd, arg);if ((rc < 0) || (rc == 221)) {break;}if (rc == 200 ) {// Open data connection with clientif ((sock_data = ftserve_start_data_conn(sock_control)) < 0) { close(sock_control);exit(1);}// Execute commandif (strcmp(cmd, "LIST")==0) { // Do listftserve_list(sock_data, sock_control);} else if (strcmp(cmd, "RETR")==0) { // Do getftserve_retr(sock_control, sock_data, arg);}// Close data connectionclose(sock_data);}}}七、设计总结通过本次的linux程序与设计课程设计让我们学会使用linux系统和socket,极大的丰富了linux系统下编程和网络方面的知识,锻炼了动手能力,为以后的工作学习打下了坚实的基础。
linus课程设计报告一、教学目标本课程的教学目标是让学生掌握Linux操作系统的基本概念、使用方法和系统管理技能。
具体包括:1.知识目标:学生能够理解Linux操作系统的历史、特点和优势;掌握Linux的基本命令、文件系统结构、用户管理、进程管理等功能。
2.技能目标:学生能够熟练使用Linux命令行界面,进行文件操作、系统配置、软件安装等;掌握文本编辑器的使用,编写简单的脚本程序。
3.情感态度价值观目标:培养学生对开源软件和自由软件运动的认识,增强他们对计算机科学的兴趣和热情。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.Linux操作系统概述:介绍Linux的历史、特点和优势,以及如何在各种环境中安装和使用Linux。
2.Linux基本命令:讲解文件操作、文本处理、网络通信等常用命令,以及命令行界面的使用技巧。
3.Linux文件系统:介绍文件系统的结构、权限管理和目录布局,以及如何进行文件和目录的操作。
4.用户和权限管理:讲解用户账号的创建、管理和服务器的安全性,以及文件权限和所有权的概念。
5.进程管理:介绍进程的概念、进程控制命令以及如何监控和管理进程。
6.系统配置和软件管理:讲解系统配置文件的作用和修改方法,以及如何使用包管理器安装、更新和卸载软件。
7.脚本编程:介绍基本的脚本编程语法和技巧,以及如何编写实用的脚本程序。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:通过讲解和演示,让学生掌握Linux操作系统的基本概念和命令。
2.讨论法:学生进行小组讨论,分享学习心得和经验,提高他们对Linux操作系统的理解和应用能力。
3.案例分析法:通过分析实际案例,让学生学会解决Linux操作系统中的实际问题。
4.实验法:安排实验室实践环节,让学生亲自动手操作,巩固所学知识和技能。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的Linux教材,为学生提供系统的学习资料。
Linux网络编程课程设计姓名:赖真运学号:37班级:12级网安一班系别:软件学院指导老师:刘凯一、实验目的(1)理解Socket概念;(2)理解并掌握Socket模型下获得本机IP信息的方法;(3)理解并发服务器模型,掌握通用套接字开发技术;(4)掌握Linux平台数据结构的传送方法。
二、实验内容(1)编写获得本机IP信息的程序;(2)编写基于并发服务器模式的网络通信原型系统;(3)要求至少综合使用到实验目的中提到的三条或三条以上内容。
三、实验条件学院提供网络实验室,1台/学生微型计算机,安装有Linux虚拟机。
四、实验原理程序进行网络通信时,是通过IP 地址和套接字来访问一个主机的。
1. IP 地址IP 地址的作用是标识计算机的网卡地址,每一台计算机都有一个IP 地址。
在程序中是通过IP 地址来访问一台计算机的。
IP 地址是32 位长度的二进制数值,存储空间是4 个字节。
例如000 00000001 00000110 是一台计算机的IP 地址。
IP 地址可以使用点分十进制来表示,。
2. 端口所谓端口,是指计算机中为了标识在计算机中访问网络的不同程序而设的编号。
端口号是一个16 位的无符号整数,对应的十进制取值范围是0~65535。
3. TCP 与UDPTCP 与UDP 是两种不同的网络传输方式。
两个不同计算机中的程序,使用IP 地址和端口,要使用一种约定的方法进行数据传输。
TCP 与UDP 就是网络中的两种数据传输约定,主要的区别是进行数据传输时是否进行连接。
TCP:TCP 是一种面向连接的网络传输方式。
这种方式是可靠的,缺点是传过程复杂,需要占用较多的网络资源。
UDP:UDP 是一种不面向连接的传输方式。
对传输可靠性要求不高时,可以选择使用这种传输方式。
4. 套接字区分不同应用程序进程间的网络通信和连接,主要使用3 个参数。
通信的目的IP 地址、使用的传输层协议(TCP 或UDP )和使用的端口号。
《Linux网络操作系统》课程设计总结报告2006年12月4日至2006年12月15日,计算机科学与工程学院2003级计算机<1>班、<2>班68名学生进行操作系统课程设计。
2006年12月4日至2006年12月8日<1>班34人由教师于千城和苏淑霞指导,2006年12月11日至2006年12月15日<2>班33人由教师于千城和苏淑霞指导。
本报告从以下方面对课程设计进行总结:一、课程设计大纲1.课程设计目的1)熟练掌握linux操作系统的使用;2)掌握linux下各类网络服务器软件安装及配置;3)掌握linux下各类开发环境的搭建与配置4)加深对TCP/IP原理与概念的理解;5)对Linux提供的网络服务作一个综合性的了解;6)熟悉linux下c程序设计、java程序设计、php程序设计。
2.课程设计软件环境服务器端:RedFlag Server 3.0;客户端:Windows XP, Vmware5.53.课程设计题目1)Linux网络服务器的配置与管理类●Linux下DHCP服务器架设●Linux下架设代理服务器●Linux下DNS服务器架设●Linux下WWW服务器架设●Linux下Mail服务器架设●Linux下Ftp服务器架设●Linux下架设samba服务器●Linux下架设流媒体服务器Helix Server●Linux下架设APT在线更新服务器●Linux下架设CVS服务器●配置Linux防火墙2)Linux shell程序设计类●shell病毒技术研究3)Linux下c/c++程序设计类●Linux 集群技术的高性能计算●用C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址●linux下的设备驱动编程●Linux防火墙程序设计●一个多用户多级目录结构文件系统设计与实现●剖析Linux下各类TCP网络服务器的实现源代码●用多线程同步方法解决生产者与消费者问题●用tcpdump分析协议后用C语言自己编写一个BBS发贴机器人4)Linux下php开发环境的搭建与配置类●搭建LAMP(Linux+Apache+Mysql+Php)开发环境5)Linux下jsp开发环境的搭建与配置类●Linux下安装并配置Eclipse●搭建Linux+Apache+Mysql+Jsp开发环境6)Linux下网格计算环境globus的搭建与配置7)Linux下安装Oracle4.设计分组安排本次课程设计时间为1周,设计时原则上3人为一组,按学号顺序进行组合,每组确定一名组长。
Linux课程设计报告
本次课程设计以Linux基本操作为主,采取了大量的基本操作,为我们提
供了一个丰富多彩的Linuxlearning space。
首先,对Linux的基本知识进行了较为全面
的介绍,并且进行了详细的系统介绍,以便学习者更好的理解Linux操作系统和相关的技
术概念。
其中,讲师还介绍了Linux的基本操作指令,让大家学会如何使用linux指令,
进行Linux操作。
然后,我们还接触到了与linux有关的一些实用功能,并且结合着实际
使用,对每个功能进行了全面的讲解,理解linux的各项习惯操作也就更加深入。
最后,
还通过实际操作,深入理解Linux安装和配置,以及shell编程等方面的知识,学习
Linux的基本使用与管理技术,加深对Linux系统的理解。
整个课程设计过程,每一步操作都很认真,认真倾听老师的指导,并逐步理解,
并且用自己的例子来反复验证,最终完成了课设任务。
本次课设让我收获了许多,更加深
刻地理解Linux系统的安装,配置以及基本操作,以及shell脚本的编写等。
同时,本次
课程设计也促使我学会了动手解决问题的能力,并且养成了勤于总结的习惯,受益匪浅。
总的来说,本次课程设计收获颇丰,简直是一波三折,曲折中令我学到了许多东西。
经过这次的Linux的基本操作,不仅能够在实际运用中熟练运用,还能更加深入地去
学习Linux,以获取更多知识。
希望未来能把Linux学习、探索得更深入,并且有所成果。
实验九 Linux网络编程(4课时)实验目的:了解嵌入式网络开发环境的组成,掌握嵌入式网络程序设计实验原理:linux 网络编程是通过socket(套接字)接口实现,socket是一种文件描述符,socket 起源于UNIX,在Unix一切皆文件的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个socket"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
socket 类型常见的socket有3种类型如下。
(1)流式socket(SOCK_STREAM )流式套接字提供可靠的、面向连接的通信流;它使用TCP 协议,从而保证了数据传输的正确性和顺序性。
(2)数据报socket(SOCK_DGRAM )数据报套接字定义了一种无连接的服,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。
它使用数据报协议UDP。
(3)原始socket(SOCK_RAW)原始套接字允许对底层协议如IP或ICMP进行直接访问,功能强大但使用较为不便,主要用于一些协议的开发。
网络编程主要函数:1.socket:创建一个socketint socket(int family, int type, int protocol);//family指定协议族;type参数指定socket的类型:SOCK_STREAM、SOCK_DGRAM、SOCK_RAW;protocol通常赋值"0", socket()调用返回一个整型socket描述符。
2.bind:用于绑定IP地址和端口号到socketint bind(int sockfd, struct sockaddr *my_addr, int addrlen);//sockfd是一个socket描述符,my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的针; addrlen常被设置为sizeof(struct sockaddr),bind()函数在成功被调用时返回0;遇到错误时返回"-1"并将errno置为相应的错误号。
《Linux网络编程》课程设计说明书题目:网络数据计算班级:姓名:指导老师:目录一、课程设计任务 (1)二系统设计 (2)三、系统编码实现 (5)四、总结 (8)一、课程设计任务完成在如下两个题目中任选一个题目。
1、网络数据计算(1)在Linux系统下,使用TCP协议套接字编程;(2)服务器应具有处理多个客户端连接并计算的能力;(3)过程描述客户端:连接服务器后,从键盘输入一连串的整数及字符串,并将这些整数及字符串发送到服务器,并发送结束指令(自定义结束指令),等待服务器返回计算结果,显示结果后退出;服务器:为每个客户连接创建一个进程,处理客户数据,显示每次收到一个整或字符串,收到结束指令后将整数累加,并将累加结果返回客户端,并关闭连接,结束进程。
2、linux系统下实现聊天室(1)在Linux系统下,使用TCP协议套接字编程;(2)服务器应具有处理多个客户端连接能力(设定最大连接数,如5个);(3)具有群发和私聊的能力;(4)过程描述客户端:连接服务器后,应能接收服务器发来信息并处理的能力,当收到聊天信息时,显示群发或私聊、信息发送客户及发送的信息,当收到客户加入或退出时,显示客户登录或退出,并更新客户列表;每次可选择群发或私聊,群发时将键盘输入信息发送给服务器,私聊时,选择私聊客户并将输入信息发送给服务器。
选择退出时,结束进程或线程,关闭程序。
服务器:为每个客户连接创建一个进程或线程,处理客户信息,当有新客户加入或有客户退出时,将客户加入或退出信息发送给每个客户端;当收到某客户的群发信息时,将信息转发给每个客户,当收到客户私聊时将信息转发给私聊客户;客户退出时关闭相应的进程或线程。
二系统设计1、数据结构设计给出客户与服务器之间交互信息格式、各个进程(或线程)之间交互的信息格式、系统中必要的数据结构设计,并给出各个信息表达的意义。
MSG结构体:客户端用来向服务端传送数据struct MSG{char name[50];//客户名字char buf[100];//传输的数据};SUM 结构体:服务端向客户端传送累加结果数据struct SUM{int n;//累加结果};2、流程设计给出客户端每个进程或线程的处理流程(画流程图)给出服务器的总体流程,以及每个进程或线程的处理流程。
Linux网络编程课程设计报告设计题目基于Linux的网络通信姓名及学号学院专业班级指导教师一、设计题目及要求1、设计题目基于Linux的网络通信2、设计要求(1)、设计整个网络系统的流程,并画出流程图。
(2)、设计发送数据包的格式。
(3)、学习linux环境下多进程或多线程的编程方法。
(4)、设计收发的模式、包括发送消息的内容。
(5)、设计多个客户端传送文件的方法。
指导教师签名:2014年月日二、指导教师评语指导教师签名:2014 年月日三、成绩理论(60%):分,作品(40%):分,总分:分。
验收盖章2014年月日毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日一、背景 (3)1.1 开发背景 (3)1.2 linux介绍 (4)二、实验目的 (6)三、实验步骤 (6)3.1交叉编译平台的安装 (6)四、设计原理 (7)4.1设计原理流程 (7)4.2程序流程分析 (8)五、网络套接字(socket)的概念 (10)5.1 Socket 介绍 (10)5.2 Socket 原理简介 (10)5.3 Socket 通信过程与程序开发 (12)六、系统实现 (16)6.1 Linux提供的有关Socket的系统调用 (16)6.2 监听连接 (19)6.3发送请求 (19)6.4主机接收请求,进行数据通信 (19)七、运行效果 (20)一、背景1.1 开发背景在网络无所不在的今天,在Internet上,有ICQ、MSN、Gtalk、OICQ等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。
Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。
但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够美观,这给Linux操作系统的普及带来了很大的阻碍。
因此制作一个Linux 操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触Linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握LINUX平台上应用程序设计开发的过程,将大学四年所学知识综合运用,以达到检验学习成果的目的。
1.2 linux介绍Linux是一种针对PC计算机和工作站的操作系统,它具有像Windows和Mac 那样的功能齐全的图形用户界面(GUI,Graphical User Interface)。
Linus Torvald和其它的遍布世界各地的编程人员共同开发的。
作为一种操作系统,它具有与Unix,Mac,Windows和Windows NT同样的功能。
提到Linux我们不能不提GNU和Unix。
Richard M.Stallman建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNU Gneral Public License,GPL)和GNU函数库通用公共许可证(GNU Library Gneral Public License,LGPL)。
大部分GNU工程的软件和文档是以GNU通用公共许可证发行的,但是有一些库是以GNU函数库通用公共许可证发行的。
按照GNU通用公共许可证的规定,Linux的源代码可以自由获取,这满足了我们学习该系统的强烈愿望。
GPL充分体现了Stallman的思想:只要用户所做的修改是同等自由的,用户可以自由地使用、拷贝、查询、重用、修改甚至发布这个软件。
通过这种方式,GPL保证了Linux(以及同一许可证下的大量其他软件)不仅现在自由可用,而且皮后经过任何修改这后都仍然可以自由使用。
Unix是由AT—T贝尔实验室的Ken Thompson和Dennis Ritchie于1969年在一台已经废弃了的PDP-7上开发的;最初它是一个用汇编语言写成的单用户操作系统。
后来,他们又在PDP-11上用C语言重新编写(发明C语言的部分目的就在于此),把Unix做成为了一个文本处理系统,这使Unix在贝尔实验室得到广泛的应用。
Unix的最初版本免费提供给许多知名的大学的计算机系使用。
加州大学伯克利分校的计算机系就是其中的一名,并地Unix进行了修改增加了许多新的特点,这就是主为人知的BSC版本的Unix。
与此同时,其它独立开发的Unix 版本也开始萌生。
Unix不断发展了,各种版本被应用到不同的计算机使用。
而Linux最初是专门为基于Intel的个人计算机设计的。
(1)Linux的昨天1991年,一名叫Linus Torvalds的芬兰大学生对Unix各种版本对于80386类的机器的脆弱支持十分不满。
他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V 的优点,同进摒弃了它们的缺点。
他独立把这个内核开发到0.02版,这个版本已经可以运行gcc、bash和很少的一些应用程序。
后来,他又开始了在因特网上寻求广泛的帮助。
1994年,Linux已经升级到1.0版本。