基于Linux点对点聊天文件传输系统

更新时间:2024-03-17 10:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学校代码: 学 号:

本科毕业设计说明书

题 目:基于Linux点对点聊天文件传输系统 学生姓名:

学 院:信息工程学院 系 别:计算机系

专 业:计算机科学与技术 班 级: 指导教师:

二 〇 一 一 年 六 月

摘 要

本文是要在Linux平台下开发一款点对点聊天文件传输系统。实现即时聊天功能和文件的传输。

系统用c语言进行编写,使用到了GTK+库,运用gcc编程语言编译器进行编译。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。使用了流式套接字实现客户端与服务器端的连接。通过创建多线程实现I/O流的非阻塞状态。使用glade生成可视化图形界面,可以在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统。

综合运用以上技术能够开发出一款基于Linux平台的聊天文件传输系统。受开发人员技术水平的限制,本系统只能归为简单的聊天系统,因为本系统与现在基于windows平台广泛应用的聊天系统的功能还用很大差距,需要用到更多的技术才能够实现更完美功能。

关键词:点对点传输;Socket;glade

Abstract

This paper is to develop a Linux platform file transfer peer chat system. Achieve real-time chat and file transfer

C language for writing system, used the GTK + library and gcc compiler to compile programming languages. Development of computer network programming using the basic theoretical knowledge, such as TCP / IP protocol, client / server mode (Client / Server mode), web programming design methods. Using stream socket client and server-side to achieve connection. Achieved by creating a multi-threaded I/O streams of non-blocking state. Use glade to generate visual graphical interface, the application can create a system prototype in a short time, then, the initial prototype system constantly revised and improved, until the formation of a viable system.

Integrated use of these technologies to develop a Linux-based chat file transfer system. By the developers technical limitations, This system can only be classified as a simple chat system, Because the system is now widely used on windows platform chat system also features a large gap with, Need to use more technology to be able to achieve a more perfect function.

Keywords: Point-to-point transmission ;Socket ;glade

内蒙古工业大学毕业设计说明书

目 录

引 言 ......................................................... 1 第一章 主要技术简介 ............................................ 2 1.1 LINUX简介 .................................................. 2 1.2 SOCKET简介 ................................................. 2

1.2.1 Socket的创建 ......................................... 3 1.2.2 Socket工作过程 ....................................... 3 1.2.3 Socket常用函数 ....................................... 3 1.3 GTK ........................................................ 4 1.4 GCC概述 .................................................... 4 1.5 TCP简介 .................................................... 5 1.6 进程与线程 ................................................. 5

1.6.1 进程 ................................................. 5 1.6.2 线程 ................................................. 6 1.6.3 线程与进程的区别 ..................................... 7 1.7 图形界面生成工具介绍 ....................................... 7

1.7.1 Glade ................................................ 7 1.7.2 GTK+ ................................................. 7 第二章 系统设计 ................................................ 9 2.1 开发需求 ................................................... 9

2.1.1 运行环境 ............................................. 9 2.1.2 客户需求 ............................................. 9 2.2 系统功能描述 ............................................... 9 2.3 系统功能模块划分 .......................................... 10 2.4 系统流程分析 .............................................. 10 第三章 详细设计说明 .......................................... 12 3.1 界面设计 .................................................. 12

3.1.1 界面的生成过程 ...................................... 12 3.1.2 生成的界面 .......................................... 13 3.2 初始化模块设计 ............................................ 14

1

内蒙古工业大学毕业设计说明书

3.3 发送模块设计 .............................................. 17 3.4 接收模块设计 .............................................. 18 3.5 线程处理模块 .............................................. 18 3.6 结束模块 .................................................. 18 结 论 ........................................................ 20 参 考 文 献 ................................................... 21 谢 辞 ........................................................ 22

2

内蒙古工业大学毕业设计说明书

引 言

在互联网已经普及的今天,人们的生活和工作越来依赖信息网络。上网聊天、传送资料已经是人们生活中必不可少的东西。目前市场已有很多受人们的青睐优秀的聊天工具,例如QQ、MSN等。这些聊天软件大都基于windows平台开发的,而且也只能在window操作系统下运行。

Linux操作系统本身具有很高的安全性,不易感染病毒,而且可移植性强,被很多专业人士所使用,也应用于大多数的服务器,然而由于Linux并不能被普通人接受使得这一环境下开发的软件很少。Internet的迅猛发展,使得Linux操作系统被越来越多的人认识并使用。然而基于Linux操作系统平台的聊天传输软件非常之少,不能满足人们的需求,所以开发一款Linux操作系统下的聊天软件是很有必要的。本系统实现了在Linux操作系统下完成两台计算机的点对点传输功能,为两台运行Linux系统的电脑提供方便快捷的交流传输平台供用户使用,与此同时也增加了Linux的实用性。

本系统将开发一款Linux下的聊天软件实现点对点传输功能。与成熟的聊天软件相比本系统能够完成的功能要少很多,但针对那些没有更多的功能需求的用户,本系统占用资源比功能强大的聊天软件要少。

1

内蒙古工业大学毕业设计说明书

第一章 主要技术简介

1.1 LINUX简介

Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日。由于Linux是开源和免费的,得到了广大计算机爱好者全力支持,现已成为今天世界上使用最多的一种UNIX类操作系统。其具有的 特点有:

1、开放性:指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。

2、多用户:是指系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。

3、多任务:它是指计算机同时执行多个程序,而且各个程序的运行互相独立。

4、良好的用户界面 :Linux向用户提供了两种界面,用户界面和系统调用。Linux还为用户提供了图形用户界面,它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好图形化界面。

5、设备独立性:是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,提供了丰富的网络功能,完善的内置网络是Linux一大特点。

6、安全性:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

7、良好的可移植性:是指将操作系统从一个平台转移到另一个平台,它仍然能按其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。

1.2 SOCKET简介

Socket通常也称作\套接字\,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。Server Socket用于服务器端,Socket是建立网络连接时使用的,在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在

2

内蒙古工业大学毕业设计说明书

服务器端或在客户端而产生不同级别。Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也要创建套接字,然后将该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出,如同读出文件中的数据一样。

1.2.1 Socket的创建

网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。Socket建立为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。Socket函数原型为:int Socket(int domain, int type, int protocol),其中domain指明所使用的协议族,AF_INET表示互联网协议族(TCP/IP协议族);type参数指定Socket的类型:SOCK_STREAM或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值0。Socket()调用返回一个整型Socket描述符,可以在后面的调用使用它。Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,Socket执行体将建立一个Socket,实际上建立一个Socket,意味着为一个Socket数据结构分配存储空间。

1.2.2 Socket工作过程

Socket程序的工作过程可分为三个步骤:1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道;2、数据通信:利用虚拟连接通道传送数据信息进行通道;3、关闭:通信结束时,再将所建的虚拟连接拆除。

1.2.3 Socket常用函数

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,可

3

内蒙古工业大学毕业设计说明书

以用它们来开发TCP/IP网络上的应用程序。

Socket编程中常用到的函数有:创建套接字Socket();将套接字与已知地址及端口绑定bind();设置监听Socket模式listen();请求建立连接connect();接受客户的连接请求accept();接受recv();发送send();关闭连接释放资源close()。

1.3 GTK

GTK(GIMP Toolkit)是一套用于创建图形用户界面的工具包,它遵循LGPL许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,GTK是一个免费的工具包。GTK被称为GIMP工具包是因为最初写它是用来开发GNU图像处理程序)的,但是它现在已经被用于很多软件项目了,包括GNOME等。GTK是在 GDK(GIMPD rawing Kit)和gdk-pixbuf的基础上建立起来的,GDK基本上是对访问窗口的底层函数(在X窗口系统中是Xlib)的一层封装,gdk-pixbuf是一个用于客户端图像处理的库。

GTK优势有:GTK得到了积极的开发与维护,围绕它有一个充满活力的社区,它本身提供了广泛的选项,用于把工作扩展到尽可能多的人,其中包括一个针对国际化、本地化和可访问性的完善的框架。GTK简单易用,对开发人员和用户来说都是这样,它的设计良好、灵活而可扩展;它是自由软件,有一个自由的开放源码许可;它是可移植的,从用户和开发人员的角度都是这样。

使用GTK的必要性:使用GTK+这样的库比起编写自己的GUI代码来有多个优势。例如,它可以显著节约开发时间,让开发人员把精力集中在项目真正重要和真正独特的地方,而不必重复公共的功能。对于用户来说,这意味着他们使用的应用程序之间具有更好的一致性:工具包能在哪使用,应用程序就能跟到哪里。就像使用LEGO一样,所有的人都使用同一兼容尺寸这一事实,意味着设计可以在使用库的人之间共享,不论他们在哪里使用它。

1.4 GCC概述

GCC是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发行的自由软件。GCC原名为GNU C语言编译器,因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++,之后也变得可处理 Fortran、Pascal、Objective-C、Java,以及其他语言。GCC通常是跨平台软件的编译器首选。有别于一般局限于特定系统与执行环境的编译器,GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序。

4

内蒙古工业大学毕业设计说明书

GCC所遵循的部分约定规则:.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C,.cc或.cxx为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i为后缀的文件,是已经预处理过的C源代码文件;ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。

1.5 TCP简介

TCP与UDP同为传输层协议。本系统采用的传输协议TCP协议。本节不但提及到了TCP,而且对UDP也做了介绍。通过对比来加深对TCP与UDP的认识。

TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。TCP提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能。

TCP协议主要特点:1、面向连接的传输;2、端到端的通信;3、高可靠性,确保传输数据的正确性,不出现丢失或乱序;4、全双工方式传输;5、采用字节流方式,即以字节为单位传输字节序列;6、紧急数据传送功能;

当然TCP并不是完美的,否则就没有人用UDP了。TCP最大的缺点是在传输数据时必须创建一个连接。这个连接通常给通信进程增加了开销,要比用UDP慢一些。

正如比较两种极端的选择的时候常见的那样。一种选择的优点往往是另一种选择的缺点。综合比较两种传输协议,TCP传输协议的高可靠性、面向连接的传输、端到端通信等优点,本系统最终采用了TCP协议。

1.6 进程与线程

1.6.1 进程

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本

5

内蒙古工业大学毕业设计说明书

于处理客户请求并建立C/S对话,服务完成后,关闭此新线程与户的通信链路,并将其终止;4、返回第2步,等待另一客户请求;5、关闭服务器。服务器端流程图如图2-2所示。

客户端程序流程图:1、指定想与之建立连接的服务器相应服务的保留端口号;2、向服务器发送connect请求并等待服务器的应答;3、接收到服务器建立连接的响应后接受服务器相应服务;4、服务请求结束后关闭通信通道并终止。客户端流程图如图2-3所示。 开始 初始化 监听请求连接 否 连接是否成功是 建立连接 通信否 是 是否关闭服务器 结束

图2-2 服务器端系统流程图

开始初始化请求连接否连接是否成功是否结束否是 建立连接是通信结束图2-3 客户端系统流程图

11

内蒙古工业大学毕业设计说明书

第三章 详细设计说明

3.1 界面设计

3.1.1 界面的生成过程

将界面设计好后,要为窗口内的每一个控件设置属性,包括触发的事件、所发出的信号、和调用的回调函数等。最后单击Glade主窗口上的“联编”(Build)按钮,这样就会在本工程目录下自动生成所有关于界面的代码和回调函数原型。程序编译:打开终端,输入命令:

$./autogen.sh

完成后再输入make命令。

Glade能够产生用来生成图形用户界面的所有文件。其中main.c文件是程序的主文件,它包含了C程序的初始化函数main(),窗口的创建语句window1=create_ window1 (),窗口的显示语句gtk_widget_show (window1)。

glade生成的C源代码有:main.c,callbacks.c,interface.c,support.c,还有几个头文件:callbacks.h,interface.h,support.h。原代码全部位于工程的子目录 src 下。其中在interface.c声明了程序中使用到的参数和回调函数,而在callbacks.c中实现回调函数,想要实现窗口内各构件的具体功能还需要修改callbacks.c源代码。在callback.c文件内有所有的回调函数的函数体为空,要在函数体内写入所要执行的语句,其中自定义的函数也要写在callback.c里面。例如:选择文件按钮的回调函数

Void on_button9_clicked(GtkButton *button,gpointer user_data) {

GtkWidget *fileselection1; if(isconnected==FALSE) return; fileselection1=create_fileselection1 (); gtk_widget_show (fileselection1); }

第一个参数是一个指向发出信号的构件的指针,第二个参数是一个指向数据的指针,是由信号连接函数的参数传进来的数据。函数体则完成文件选择构件的创建及显示功能。

12

内蒙古工业大学毕业设计说明书

3.1.2 生成的界面

本系统为服务器端和客户端设计了相同的主界面,在运行程序后通过主界面上的两个单选按钮,选择在连接中做为服务器端或客户端。同时在选择发送文件时也使用了相同发送文件界面。

1、服务器端界面如图3-1所示。

图3-1 服务器端主界面

2、选择发送文件界面如图3-2所示。

图3-2 选择发送文件界面

3、客户端界面如图3-3所示。

13

内蒙古工业大学毕业设计说明书

图3-3 客户端主界面

3.2 初始化模块设计

通过主界面内选择服务器或客户端点击初始化按钮完成端点创建。服务器端建立端点后,创建Socket对象,绑定端口,监听连接。客户端建立端点后,同样创建Socket对象,向服务器端发出连接请求。

服务端初始化后会创建一个套接字对象并给这个对象填充地址结构,包括所使用的网络协议、IP、端口号。使用bind()将套接字绑定到8080端口,开始监听连接请求。当有收到连接请求,定义客户端Socket地址结构client_addr。将accept()接收的客户端的Socket内容写入client_addr中。连接成功要显示连接成功信息,同时配发一个新的线程用于接收信息。

主要代码端如下:

//程序段说明:首先定义一个套接字对象,给这个对象赋值来创建套接字,然后对这个套接字进行赋值。

struct sockaddr_in my_addr;

if((sockfd = Socket(AF_INET,SOCK_STREAM,0)) == -1) {

perror(\ exit(1); }

14

内蒙古工业大学毕业设计说明书

my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYPORT); my_addr.sin_addr.s_addr = INADDR_ANY; bzero(&(my_addr.sin_zero),8);

//函数说明:将套接字和已知端口绑定

if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr)) == -1) {

perror(\ exit(1); }

//监听函数:监听客户端请求,实现连接,创建多线程 void listen_client(void) {

GtkTextIter iter; listen (server_fd,1);

client_fd=accept(server_fd,(structsockaddr*)&client_addr, &addr_size); gdk_threads_enter();

gtk_text_buffer_get_end_iter(buffer2,&iter);

gtk_text_buffer_insert(buffer2,&iter,\地址为 \gtk_text_buffer_get_end_iter(buffer2,&iter); gtk_text_buffer_insert(buffer2,&iter,(gchar *)inet_ntoa(client_addr.sin_addr),-1); }

服务器端初始化程序流程如图3-4所示。

15

gtk_text_buffer_get_end_iter(buffer2,&iter);

gtk_text_buffer_insert(buffer2,&iter,\ 的客户端已连接!\\n\gdk_threads_leave(); isconnected=TRUE;

g_thread_create((GThreadFunc)get_message,NULL,FALSE,NULL);

内蒙古工业大学毕业设计说明书

创建多线程是否有请求接入是接受请求建立连接绑定套接字到端口开始服务器初始化监听连接请求图3-4 服务器端初始化模块程序流程图

客户端初始化后同服务器端一样,要创建一个套接字对象并填充地址结构,绑定到8080端口,向服务器端发出连接请求,并显示连接是否成功。

请求连接主要代码如下:

//判断请求连接是否成功,显示相应信息。

if(connect(server_fd,(struct sockaddr*)&server_addr,len)==-1)

{ } else { }

gtk_text_buffer_get_end_iter(buffer2,&iter);

gtk_text_buffer_insert(buffer2,&iter,\成功与服务器连接......\\n\isconnected= TRUE; return TRUE;

gtk_text_buffer_get_end_iter(buffer2,&iter);

gtk_text_buffer_insert(buffer2,&iter,\连接服务器时出错!\\n\return FALSE;

客户端初始化模块程序流程如图3-5所示。

16

内蒙古工业大学毕业设计说明书

连接是否成功是显示连接成功返回失败信息请求连接创建套接字对象开始客户端初始化否图3-5 客户端初始化模块程序流程图

3.3 发送模块设计

发送模块由发送消息和发送文件两部分构成。其中发送消息部分可以通过在回调函数内使用sprintf()、write()等函数,实现信息的发送和显示。发送按钮的回调函数被调用时首先判断是要执行服务器端,还是客户端代码。服务器端与客户端发送信息模块代码,主要区别在于发送时所使用的套接字对象不同,服务器端使用的Socket对象为client_fd,客户端使用的Socket对象为server_fd。清除按钮能够删除所显示的信息。

发送文件部分使用选择文件按钮调用选择文件窗口,实现文件查找,选择想要发送的文件,将选择要发送文件的路径和文件名显示在发送文件对话框中。发送按钮调用文件发送函数将选择的文件发送到接收方。文件发送函数同信息发送函数一样,要判断选择执行服务器端和客户端发送代码。发送模块运行过程如图3-6所示。 发送模块 发送消息发送文件 是否运行服务器端是否运行服务器端 服务器端模块使用客户端模块使用服务器端模块使用客户端模块使用client_fd套接字对象server_fd套接字对象client_fd套接字对象server_fd套接字对象 发送发送发送发送 17

内蒙古工业大学毕业设计说明书

图3-6 发送模块流程图

3.4 接收模块设计

接收模块使用get_message()函数进行接收。当get_message()运行时首先会判断是服务器端,还是客户端的调用,根据判断结果执行不同的代码段。在接收到信息后要判断发送方想要传送的是文件还是消息,再次选择执行不同的代码段。

接收文件需要调用filereav()函数,filereav()执行过程如下首先接收文件名,用接收到的文件名命名创建一个文件,将接收缓存buffer中的内容写入创建的文件中,最后关闭文件。

发送模块运行过程如下图3-7所示。

图3-7 接收模块流程图

调用filereav()接收文件调用get_message()接收信息调用filereav()接收文件调用get_message()接收信息是是否接收文件否是是否接收文件否是是否运行服务器端否get_message()函数运行服务器端运行客户端3.5 线程处理模块

线程处理模块是在主界面显示后,进入gtk_main()等待事件、信号的触发。服务器端在初始化创建Socket对象成功后,创建一个线程用于监听连接请求,当服务器端与客户端连接成功后再创建一个线程用于接收信息。

任何进程在启动时就已有了一个主线程,需要再生成线程则使用g_thread_create()函数,在该函数中可以指定线程的属性、线程例程、传给线程例程的参数。线程例程是一个用户自定义函数,即线程执行的代码。当线程例程开始时,必须获得一个唯一的全局锁,可通过函数gdk_threads_enter()来获得, 当线程例程返回时,必须释放该全局锁,可通过函数gdk_threads_leave()来释放。

3.6 结束模块

通过点击图形界面上的退出按钮退出程序。在执行退出按钮的回调函数时,

18

内蒙古工业大学毕业设计说明书

首先要判断连接是否成功过,如果没有连接则直接关闭Socket对象,调用gtk_main_quit()退出程序销毁界面。如果服务器端与客户端处于连接状态则要判断是服务器端还是客户端。

服务器结束要将服务器退出信息发送给客户端,关闭用于监听和用于连接客户端的两个Socket,然后退出程序。

客户端结束要将客户端退出信息发送给服务器,关闭与服务器连接的Socket释放占有的系统资源,退出程序销毁界面。

结束模块程序流程如图3-8所示。

图3-8 结束模块流程图

结束服务器端向客户端发送服务器关闭信息客户端向服务器端发送客户端关闭信息是结束模块否是否处于连接状态是是否运行服务器端否关闭Socket对象关闭Socket对象19

内蒙古工业大学毕业设计说明书

结 论

本系统是在Linux操作系统下,使用C语言进行开发的一款点对点聊天软件。综合其他聊天软件的优缺点本系统实现了基本的聊天和传送文件的功能。在设计过程中界面设计使用了GTK+库和Glade图形界面生成工具。Socket套接字用来创建连接,实现通信双方正常连接。综合比较TCP和UDP后,选用更安全的面向连接的TCP传输控制协议。在解决I/O阻塞问题时,选择了占用系统资源较少的线程。本系统最终可以实现点对点的字符串发送和接收,能够实现简单的聊天功能。

系统能能够完成一定的功能,但还有很多不完善的地方。由于技术的缺乏和时间的限制本系统在实现功能时存在一些问题,例如系统在信息传输过程中,没有对传输的消息和文件进行加密操作,因为这在网络中传输中是很不安全的。

本系统在实现基本功能的基础上还需要完善一些不足的地方。系统需要添加消息加密和解密模块,来保证传输信息的安全性。图形界面是由图形工具glade生成,虽然使用glade能够很容易搭建起一个图形界面,但是用glade缺点在于生成的界面有点生硬不够美观,需要改进。以上这些问题都要在以后的工作中逐步解决。

毕业设计让我学到的不止是专业知识,更学到了那种精益求精、严谨的治学精神,这些都使我受益终生的财富。我要在以后的工作生活中保持和发扬这种精神。

20

内蒙古工业大学毕业设计说明书

参 考 文 献

[1] 卢军,曾茂城.Linux体系与编程——基于Linux0.01版本.中国水利水电

出版社.2010,(10)180-184

[2] 杨树青,王欢.Linux环境下C编程指南(第2版).清华大学出版社.2010

年4月第二版

[3] 谢希仁.计算机网络.电子工业出版社.2010年1月

[4] 王静,曲凤娟.基于 Socket 的多用户并发通信的设计[J],福建电

脑,2007(3):164.

[5]王华,马亮,顾明.线程池技术研究与应用[J].计算机应用研

究,2005,22(11):141-145.

[6]吴先亮.基于多线程的串口通讯软件设计与实现[J].控制工

程,2004,11(2):171-173.

[7] Jongbok Byun. Instant Messaging and Presence Technologies for College

Campuses [J].IEEE Network.May/June 2005.

[8] 张尧学,史美林,长高.计算机操作系统教程.清华大学出版社.2006年10月

第3版

[9].Douglas E Comer.用TCPIP进行网际互连--原理协议与结构(第5版第1

卷). 电子工业出版社. 2007年第 1 版

[10]McClea M, Yen D C, Huang A. An Analytical Study Towards the

Development of a Standardized IM Application[J]. Computer Standards & Interfaces, 2004, 26 (4). [11]Kurt 著,张辉 译.GNU/Linux编程指南.清华大学出版社.

2002,(20):340-358

[12]Gary R.Wright.SY-TCP/IP Detailed ? Volume 2: implementation (English).

人民邮电出版社.2010

[13][美]科钱,伍德编著,袁科萍,岑 岗,樊庆红,译.Unix Shell 编程(第三版)[M].

北京:中国铁道出版社,2004.

[14]王俊伟,吴",俊.Linux标准教程[M].北京:清华大学出版社,2006.

[15][美]索贝尔著,杨明军,王凤芹,译.Linux 命令、编辑器与Shell 编程[M].

北京:清华大学出版社,2007.

21

内蒙古工业大学毕业设计说明书

谢 辞

在庄旭菲老师老师的指导和同学的帮助下,我最终完成了毕业设计。在此要向在毕业设计期间给予我帮助的所有人予表示衷心的感谢。特此还要郑重感谢我的指导教师庄旭菲老师。

庄旭菲老师在整个毕业设计期间给予了我莫大帮助和支持。庄老师每周要带大量的课同时又指导我们八位毕业生的毕业设计,即使这样忙碌依然抽出大量时间对我进行指导。庄老师甚至放弃了休息时间为了指导我的毕业设计深深的感动了我。在庄旭菲老师的严格要求下,我从对Linux系统一无所知到能够使用。从不了解GTK+ C ﹑Socket到最终编写出本文件传输系统。在生成图形界面时,庄老师更是手把手的教我。我的每一点进步都离不开庄老师孜孜不倦的教诲和心血。

22

本文来源:https://www.bwwdw.com/article/z7h8.html

Top