F福建电脑
UJIANCOMPUTER基于Linux的局域网聊天软件设计与实现
唐天波,赖小波
(浙江中医药大学医学技术学院
浙江
杭州
310053)
【摘要】Linux具有免费开源,支持多用户、多任务、多线程等优点,因其自由及良好的硬件兼容性在业界被广泛使
用。当前形势下,很多公司限制其职工在办公过程中使用外网,因而局域网的应用变得越来越广泛。为了方便员工之间的信息交流,局域网聊天软件就成为了日常办公过程中最为常用的软件之一,可广泛应用于内部数据传输与交流,具有重要的现实意义。本文希望设计并开发了一款基于Linux的局域网聊天软件。
【关键词】Linux;局域网;聊天软件;嵌入式C;GTK0引言
近年来,Linux技术迅猛发展,因其低成本、自由、开源,和良好的硬件兼容性,高灵活性而被广泛应用,大大提高了系统的效率,成为了更多人理想的开发平台。使用频率较高的互联网通信软件,如QQ、微信、阿里旺旺等都需要连通外网,然而很多公司往往会限制其职工进行外网的使用。因此,职工之间信息的交流不得不通过公司内部的局域网来实现。所以,本文希望通过设计并开发一款基于Linux系统的局域网聊天软件,来满足职工之间即时通讯的需求,并以此来加深对Linux系统下通讯机制的理解。本文基于Linux平台,利用嵌入式C编程,
处理器:IntelCore2DuoCPUT6600内存:1G网络环境:局域网操作系统:Linux系统开发平台:GCC、GTK开发语言:嵌入式C语言
2.2关键技术
2.2.1嵌入式C和GTK
嵌入式C语言[4]和一般的C语言从语法上并无太大区别,但是因为用嵌入式C编写的程序大多要烧录到开发板上,CPU
的运行和普通电脑的运行不一样,所以编译器不一样,生成的可执行程序也不一样,一些系统相关的库也会有所不同。嵌入式C在编写过程中会更多的考虑可能会受到的硬件的限制,对实时性的要求也会比较高。同时,由于嵌入式系统一般内存、
GTK开发界面的一款简易的即时通讯软件。它分为服务端和客
户端两个模块,客户端通过服务端进行通信。服务器模块主要实现了服务器的配置,数据的传递和对离线消息的保存;客户端主要实现了用户注册、登录、密码修改和文字聊天等功能。
1背景
随着互联网技术的不断发展,网络通讯已经成为最为重要的应用之一。腾讯公司自主研发的聊天软件QQ,以较为明显的优势在市场上得到了广泛而深刻的运用,成为了几乎每台电脑必装软件之一。即使分处两地,人们依然可以通过互联网实现即时通讯。但是在很多情况下由于各方面的限制我们无法连接互联网,只能组建局域网,在不需要与外接通讯,而只想实现局域网内的即时通讯的情况之下,就需要一款与QQ同类型的能
[1]
CPU等资源有限,编程时需要特别考虑系统的高效性。
GTK是一套跨平台的图形工具包,按LGPL许可证发布,是Linux下开发图形界面的应用程序的主流开发工具之一。它
是一个库(或者实际上是若干个密切相关的库的集合),它支持创建基于GUI的应用程序。另外,可以把GTK想象成一个工具包,从这个工具包中可以找到用来创建GUI的许多已经准备好的构造块。
够在局域网内运行的聊天软件。
我们可以从网上下载到很多局域网聊天的软件,它们大多运行在Windows平台下,虽然能够实现的功能很多,但是基本都是非开源的。互联网的发展为我们提供了很多的应用,而聊天服务是互联网提供的重要服务之一[2]。本文希望通过程序设计,熟练运用Linux平台[3]下的指令系统,并且熟练掌握Linux平台下的Socket网络编程技巧,从Socket网络编程中理解
2.2.2LinuxSocket网络编程
Socket是独立于具体协议的网络编程接口[5],在ISO模型中,主要位于会话层和传输层。Socket描述符是一个指向内部数据结构的指针[6],指向描述符表入口。调用Socket()函数时,将建立一个Socket,为一个Socket数据结构分配存储空间。两个
网络程序之间的一个网络连接包括五种信息:通信协议、本地主机地址和端口、远端主机地址和端口。在使用socket进行网络传输以前,必须配置该socket。面向连接的socket客户端调用
TCP/IP协议和UDP协议的具体应用方式,并能应用GTK来开
发软件界面,便于用户操作。
2开发环境和关键技术2.1开发环境
本文设计的聊天软件基于Linux系统,而Linux系统本身对硬件资源的要求不高,所以普通的电脑都可以满足开发要求,完成设计所选择的具体硬件环境和软件环境如下:
connect()函数在socket数据结构中保存本地和远端信息。无连接socket的客户端和服务端以及面向连接socket的服务端通过调用bind()函数来配置本地信息。
2.2.3TCP/IP协议、UDP协议
网际协议IP是TCP/IP[7]的心脏,也是网络层中最重要的协议。IP层接收由更低层发来的数据包,并把该数据包发送到更高层———TCP层或UDP层;相反IP层也会把从TCP或UDP
基金项目:国家自然科学基金(61602419),浙江省自然科学基金(LY16F10008,LQ16F020003),
浙江省重中之重一级学科--中药学学科科研开放基金资助项目(Yao2016018)。
2018年第10期
福建电脑
·15·
F福建电脑
UJIANCOMPUTER[8]
层接收来的数据包传送到更低层。TCP和UDP位于同一层,前
者是面向连接的,是可靠传输;后者是面向非连接的,是不可靠传输。综合考虑数据的重要性已经信息的并发性等特点,在对用户信息进行管理的时候使用TCP协议,而在用户之间文字传送的过程中使用UDP协议。
2.2.4Client/server结构(客户端/服务端模式)
Client/Server结构[9](C/S结构)是大家熟知的客户机和服务
器结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构。
服务端负责初始化软件运行环境,加载用户信息,为用户之间的文字传送提供平台。客户端由用户操作,可进行注册、登录、密码修改和文字聊天等功能。客户端将用户的操作请求发送至服务端,信息经过服务端处理,再发往对应的客户端。
3程序实现
服务器的工作主要是读取用户数据,并开启服务。服务器端的配置自服务器程序运行开始后自行完成,主要是对用户数据的读取,对用户发送的离线信息的加载。客户端是系统与用户交互的主要模块,用户可以在客户端注册账号、修改密码、登录系统、相互进行文字传送、更新在线好友。客户端登录窗口是系统与用户进行直接交互的第一扇窗口,通过此窗口,用户可以进行注册和登录,同时还可以选择修改密码,如图1所示。
图1客户端登录界面
注册模块是客户端程序的重要组成部分,用户可以选择自己喜欢的昵称注册,登录账号名即为用户聊天时的昵称,如图2所示。
图2客户端注册界面
登录是客户端程序的基本组成部分。用户输入正确、有效的账号和密码后,点击登录按钮,系统就会弹出登录后的平台界面,如图3所示。
客户端提供了密码修改功能,用户可以在登陆之前对自己的登录密码进行修改,如图4所示。文字传送是客户端程序的核心模块。通过选中好友,点击选择好友聊天按钮和对方进行聊天。若对方在线则可以直接进行交互;若对方不在线,则服务器会将消息保存至文件中,等待对方下次上线时提醒对方接受离线消息,如图5所示。
16·
福建电脑2018年第10期
图3
客户端登录后界面
图4
客户端密码修改界面
图5
聊天界面
点击更新好友列表按钮可以查看所有已注册的用户是否在线,然后用户可以选择和在线的好友进行聊天或者给不在线的好友发生离线信息,如图6所示。
图6
显示好友界面
·F4.结束语
福建电脑
UJIANCOMPUTER参考文献:
[1]赵海亮.局域网聊天程序的分析与实现[J].中国科技信息,2004,22:
虽然目前的局域网聊天软件种类繁多,几乎能满足各个用户的需求,但是依然存在很多可以改进的地方。先从功能方面来看,现在的局域网聊天软件几乎都有即时聊天、文件传输、语音、视频、表情等功能,但是这些功能在使用的时候可能会出现很多问题。比如聊天的时候会出现数据丢失,传送文件的时候传输速度的快慢,语音、视频的时候会不会出现声音模糊,画面不清晰的情况,特别是视频用以产生画面延迟的现象。这些情况将来一定能够得到合理的解决,提供给用户最舒适的人机交互。再从开发平台来看,大部分的软件都只能支持单系统,比如能在Windows平台[10]下运行的软件,无法在Linux平台下正常运行。随着IT行业的迅猛发展,支持多系统的局域网聊天软件会越来越多。这样使用不同的操作系统的用户可以使用同一款软件进行即时通讯。最后从软件的开发环境来看,从面向对象语言产生以来,由于面向对象能做界面,而界面能更好的实现人机交互,所以被广泛应用。但是语言本身的更新换代速度非常快。如早起用VB,Ddlphi开发的软件现在已经逐渐被Java和
17-18.
[2]许秀林.运用VisualC++构建局域网聊天室[J].连云港化工高等专科学校学报,2002,15(4):1-3.
[3]刘杰.Linux网络编程一步一步学[M].江苏:无锡矽太恒科,2009.[4]宋劲杉.LinuxC编程一站式学习[M].北京:北京亚嵌教育研究中心,2009.
[5]WarrenWGay.Linuxsocketprogramming:byexample[M].USA:
QueCorp.Indianapolis,2000.
[6]SeanWalton.LinuxSocketProgramming[M].USA:SamIndianapolis,
2001.
[7]林晓.基于TCP/IP的局域网聊天工具设计[J].福建电脑,2007,10:
123-124.
[8]D.E.Comer,D.L.Stevens.InternetworkingwithTCP/IP:client-
serverprogrammingandapplications,Linux/Posixsocketsversionv.3[M].USA:PrenticeHall,2000.
[9]RobertLove.Linuxsystemprogramming[M].USA:O'ReillyMedia,
C#所代替。比如Java就兼容了强大的Socket网络编程功能,可以很轻松的利用Socket进行网络编程。
本文基于Linux平台,利用嵌入式C编程和GTK开发界面
设计了一款简易的即时通讯软件,分为服务端和客户端两个模块。客户端通过服务端进行通信,服务器模块主要实现了服务器的配置,数据的传递和对离线消息的保存;客户端主要实现了用户注册、登录、密码修改和文字聊天等功能。
2007.
[10]何骅.一种基于WinSock的局域网聊天程序的设计与实现[J].浙江教育学院学报,2009,(4):107-112.
作者简介:
唐天波(1998-),男(汉族),四川省资中县龙江镇,在读本科生,主要从事嵌入式系统研究;赖小波(1981-),通讯作者,男(汉族),江西省赣州市龙南县人,副教授,博士,硕导,主要从事视觉与学习等方面的研究。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(上接第143页)
[J].李勇.电脑知识与技术(经验技巧).2018(03)
[3]校园类APP发展研究综述[J].袁玲玲,杨秀丽.电子世界.2018(10)[4]智能手机APP在教育教学领域中的应用[J].朱焕生.电子技术与软件工程.2016(23)
[5]互联网+背景下的手机APP安全性测试研究[J].敖勇平.电脑知识与技术.2016(27)
[6]基于Android技术掌上校园客户端的设计与实现[J].王海峰,李佳,
冯晨煜,朱双.福建电脑.2015(06)
[7]基于安卓的掌上校园客户端设计初探[J].王超,张亮,张宏彬,高晓洁.电子技术与软件工程.2014(09)
作者简介:
王艳秋为通讯作者
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(上接第155页)
N次的盖章信息(N>1)。
4.结束语
本文介绍了基于国密SM2算法的电子印章的应用场景,设计原理,最后介绍了其在征信查询系统中的应用。希望能给电子印章软件开发者提供一些理论帮助,在实际开发中能够得到借鉴和参考并开发出符合客户需求的电子印章软件。
参考文献:
系:签名1的摘要包含第一次盖章信息和PDF文件信息,签名
[1]欧海文,王誉晓,欧阳琛,谢绒娜.基于SM2算法的数字证书解析及有效性验证[J].计算机应用,2016,36(S1):46-48+94.[2]实际项目开发相关文档:密。
2包含第一次盖章所包含的摘要信息加上第二次盖章信息,第N次签名的摘要包含第N-1次盖章所包含的摘要信息加上第
2018年第10期福建电脑
·17·
因篇幅问题不能全部显示,请点此查看更多更全内容