太原科技大学学士学位论文学士学位论文题目:基于linux的网络聊天室设计人:张博指导教师:李晓明所属系部:计算机科学与技术学院专业班级:计算机科学与技术0920022013年6月1日太原科技大学学士学位论文太原科技大学毕业设计(论文)任务书学院:计算机科学与技术学院学生姓名张博学号200920010229专业班级计算机092002同组人任务下发时间2013.02任务完成时间2013.06设计(论文)题目Linux下的网络聊天室设计目的要求通过毕业设计,使学生熟练掌握socket网络编程和tcp/ip网络协议,了解多线程的实现与运用,了解time函数对时间的显示,在此基础上,实现一个linux下的具备基本功能的网络聊天室。设计主要内容实现一个linux下的网络聊天室,具体包含的功能如下:1.登录模块:为普通用户服务主要包括a注册b登录2.聊天模块:为已注册的用户服务主要包括a公共聊天b私人聊天设计提交资料1.毕业论文2.软件代码学生签名张博指导教师签名李晓明系主任签名主管院长签名太原科技大学学士学位论文I中文摘要Linux作为免费开源操作系统广泛应用于企业。IM即时通讯软件是近年来流行的通信方式,企业、个人等都在更多地使用IM进行沟通。因此在linux下编写一个IM即时通信软件是十分有意义的。本文实现了一个linux系统下网络聊天室的基本功能,系统用户界面采用字符交互,其主要功能包括用户信息注册,用户登录,群聊,私聊等。使用mysql数据库保存用户的登录信息,socket套接字和TCP/IP协议实现网络通讯。软件编程采用C/S结构和多文件系统进行编写。本系统基于linux下的vi编辑器进行编辑,gcc编译器进行编译,gdb调试成功,经过测试,系统运行稳定,整体工作正常。关键词:linux;socket;MYSQL;C/S结构;TCP/IP协议;太原科技大学学士学位论文IIAbstractAUTHORZhangBoTUTORLiXiaoMingLinuxasafreeopensourceoperatingsystemiswidelyusedinenterprises.IMinstantmessagingsoftwareisamethodofcommunicationwhichispopularinrecentyears,enterpri-ses,individualshavetocommunicatemorewithIM.Therefore,thepreparationofaIMinst-antcommunicationsoftwareundertheLinuxisverynecessary.Inthispaper,therealizationofthebasicfunctionsofaLinuxsystemunderthenetworkchatroom,theuserinterfaceusingthecharacterinteractionsystem,itsmainfunctionsincludeuserregistration,userlogin,chat,privatechat.TheuseofMySQLdatabasetostoreuserlogininformation,toachievenetworkcommunicationsocketsocketandTCP\/IPprotocol.SoftwareprogrammingusingC\/Sstructureandmul-tiplefilesystemforthepreparationof..Thesystemforediting,LinuxVIeditorbasedongcccompiler,GDBdebuggingsuc-cess,canbeusedinnetworkchat,goodresults.Keyboard:linux;socket;MYSQL;C/Sstruct;TCP/IPprotocol太原科技大学学士学位论文III目录第一章系统概述..................................................................III1.1系统开发背景和意义...........................................................11.2实验环境....................................................................11.3本文组织架构.................................................................2第二章相关技术.....................................................................32.1TCP/IP,UDP..................................................................32.1.1TCP/IP协议栈..........................................................32.1.2IP....................................................................32.1.3TCP...................................................................32.1.4UDP...................................................................42.2客户/服务器模型..............................................................52.3网络套接字(socket)的概念...................................................52.4多线程的概念.................................................................62.5MYSQL的应用.................................................................62.5.1MYSQL简介.............................................................62.5.2MYSQL的系统特性.......................................................72.5.3MYSQL的基本操作.......................................................72.6字符界面....................................................................9第三章系统实现...................................................................1223.1Linux提供的有关Socket的系统调用..........................................1223.2实验过程说明(使用TCP/IP)................................................144第四章编码实现....................................................................154.1服务器端....................................................................154.1.1data.h................................................................154.1.2itoa.h,itoa.c........................................................164.1.3list.h,list.c.........................................................164.1.4menu.h,menu.c........................................................17太原科技大学学士学位论文IV4.1.5my_db.h,my_db.c......................................................214.1.6server.h,server.c....................................................224.1.7makefile..............................................................234.2客户端.....................................................................24第五章系统测试....................................................................26结束语............................................................................288致谢..............................................................................289参考文献...........................................................................30附录一英文资料翻译................................................................31附录二代码.......................................................................35太原科技大学学士学位论文1第一章系统概述1.1系统开发背景和意义在网络无所不在的今天,在Internet上,有QQ、MSN、等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。Linux操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够美观,这给Linux操作系统的普及带来了很大的阻碍。因此制作一个Linux操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触Linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握Linux平台上应用程序设计开发的过程,将大学四年所学知识综合运用,以达到检验学习成果的目的。本毕业设计将设计一个Linux平台下的基于字符界面的网络聊天软件,该软件使用字符界面和C程序语言,通信