《基于linux的聊天系统设计与实现--信息管理与信息系统毕业论文.doc》由会员分享,可在线阅读,更多相关《基于linux的聊天系统设计与实现--信息管理与信息系统毕业论文.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、xxx师范学院2015届本科毕业论文(设计)2015届本科毕业论文(设计)基于Linux的聊天系统设计与实现姓 名:_zz_系 别:_计算机与信息技术_专 业:_信息管理与信息系统_学 号:_xxxxxx_指导教师:_xx_2015年4月20日1目录摘要IIAbstractIII1 引言11.1 背景11.2 选课意义11.3 Linux与Windows操作系统12 需求分析32.1 需求性分析32.1.1 编写目的32.2 对界面的需求33 系统应用技术33.1 Gtk+界面设计33.1.1 Gtk+基础33.1.2 Gtk+的主要特点43.1.3 Gtk+的组成43.2 socket通信4
2、3.2.1 Socket简述43.2.2 Socket的主要类型43.2.3 Socket组要在如下两类系统中使用43.3 MySql数据库43.3.1 MySql发展历史43.3.2 MySql的常用命令53.3.3 MySql的重要特性64 设计和实现64.1 Gtk+界面设计64.2 连接数据库84.3 网络通信socket编程94.3.1 socket编程方法94.3.2 客户端/服务器工作流程94.3.3 结果截图115 系统测试115.1 实现Gtk+界面设计115.2 实现连接数据库135.3 实现socket通信13参考文献15致谢15附录16III基于Linux的聊天系统设计
3、与实现摘要 Linux是一种能运行于多种平台、源代码公开、免费、功能强大、遵循POSIX标准、与UNIX兼容的操作系统。Linux自20世纪中期以来一直在突飞猛进地发展,人们在计算机软件开发和应用中越来越离不开它。Linux的诞生和发展给全球的软件业带来了新的机遇,也使微软的Windows操作系统面临有史以来最大的挑战。由于Linux属于自由软件,它的源代码是公开的,并遵循通用公司公共许可证(General Public Licence,GPL),所有用户可以免费使用,从而使Linux在极短的时间内就成了一套成熟而稳定的操作系统。全世界成千上万的程序专家和Linux爱好者正在通过Interne
4、t不断地对Linux进行开发、完善和维护。 Linux操作系统核心最早是1991年由芬兰的Linus Torvalds在芬兰赫尔辛大学上学时发布的(那年Torvalds年仅25岁),后来经过众多世界顶尖的软件工程师的不断修改和完善,Linux得以在全球普及开来,在服务器领域及个人桌面得到越来越多的应用,在嵌入式开发方面更是具有其他操作系统无可比拟的优势,并以每年100%的影虎数递增,显示了Linux强大的实力。 基于资源共享和软件自由的思想,linux成为越来越多技术人员的理想之国。作为一个稳定的多用户类unix网络操作系统,linux能提供完美的网络解决方案,出色的胜任网络构建和维护。出于对
5、unix技术优势的出色继承和延续,linux对多种网络协议的支持使得网络解决方案极大的丰富。 在 Linux 中的网络编程是通过socket接口来进行的,Socket是TCP/IP网络的API。不但是一种特殊的I/O,它也是一种文件描述符。socket有TCP和UDP两个协议,TCP协议有数据的可靠性、应用的实时性、网络的可靠性三个优点。因此选择TCP协议更为可靠。本系统实现了在Linux网络聊天室的基本功能。在Linux下编写并调试服务器端程序和客户端程序,实现了客户、服务器之间的连接和通信。可以在单机上开辟两个窗口分别运行客户、服务器端的程序,或者两台主机链接分别作为客户和服务器的方式。该
6、系统主要实现了编辑信息、换行、查询历史记录、发送及关闭等主要功能。Linux是类UNIX计算机操作系统的名称。Linux操作系统内核的名称也是“Linux”。Linux操作系统是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但实际上,人们已经习惯了用Linux来形容整个基于Linux内核并且用GNU工程各种工具和数据库的操作系统。基于这些组件的Linux软件被称为Linux发行版。一般来说,一个Linux发行包包含大量的软件,比如软件开发工具、数据库(如MySql)、网络服务器、Xwindows、桌面环境、办公包、脚本语言,等等。Linux现在是个
7、人计算机和工作站上的UNIX类操作系统。它不仅继承了UNIX的特征,而且在许多方面超过了UNIX。大量的高级程序设计语言已移植到Linux系统上,因而使它成为理想的应用软件开发平台,而且,在Linux系统下开发的应用程序具有良好的可移植性。Linux拥有广泛的应用前景。该聊天系统主要实现功能有:编辑信息、换行、查询历史记录、发送及关闭等主要功能。不同于之前分小组做过的系统的区别是,本次建立的系统是作者自己依据在洛阳惠普基地所学得的知识,结合平时所做的实验,总结教训和失误之处,自行完成的系统。本人觉得更有意义。关键字:Linux;Socket;C语言;TCP;GCC;MySQL.Design a
8、nd implementation of the chat system based on LinuxAbstract Linux is a kind of can run on a variety of platforms, open source, free, powerful, follow the POSIX standard, and UNIX compatible operating system. Linux since mid twentieth Century has been the development of make a spurt of progress, peop
9、le are in the computer software development and application cannot do without it. The birth and development of Linux has brought new opportunities for the global software industry, also makes the Windows operating system Microsoft faces its biggest challenge. Because Linux is free software, its sour
10、ce code is open, and follow the General Company Public License (General Public Licence, GPL), all the users can use free of charge, so that the Linux in a very short period of time has become a mature and stable operating system. The whole world tens of thousands of program expert and Linux enthusia
11、sts are through Internet, constantly on the Linux to develop, improve and maintain. Linux operating system is the core of the earliest Finland in 1991 by the Linus Torvalds in Finland Helsinki University School (Torvalds released that year only 25 years old), after many of the worlds top software en
12、gineers constantly revised and improved, Linux was able to spread around the world, has been used more and more in the field of personal server and desktop, in embedded development is more with other operating system There is nothing comparable to this advantage, and increase to the number of shadow
13、 tiger every year 100%, shows the Linux strength. On the basis of the thought with free resource-sharing and software, linux becomes more and more technical staffs ideal country.and is attracting more persons to join in this ideal constantly.As a steady multi-user unix network operating system, linu
14、x can offer the perfect network solution and is competent of constructing and maintaining the network excellent.For the inheritting and extending splendidly of technological advantage to unix, the abundance that linux support to many kinds of procotols makes the network with great solution. In Linux
15、, network programming is carried out through the socket interface,Socket is the API of TCP/IP network.Not only Is a special I/O but also is a file descriptor.Socket has two protocols which are TCP and UDP,TCP protocol has three advantages of the eliability of data, the application of real-time and t
16、he network reliability.So it is more reliable to choose TCP protocol. The system Implementate the basic function of the network chat room under linux. Prepared and debugging server and client program in the Linux. Can open up two windows In a single machine to run the server and client program respe
17、ctively,or to connect twohosts, respectively, as the way of the client and server.This system mainly realizes the editing information query, newline, main function of history, sending and close etc.Keywords: Linux;Socket;C Language;TCP;GCC;MySQL.1 引言1.1 背景 在这个人才如潮涌般的世界,系统界的先驱Windows系统已经不能满足越来越多的开发人员
18、的需求。Linux系统由于其优越的自身条件,能运行于多种平台、源代码公开、免费、功能强大、遵循POSIX标准、与UNIX兼容的操作系统等诸多优势,越来越受到开发人员的青睐。本次选课的内容选择这个系统开开发聊天工具也是因为这个原因。1.2 选课意义 Linux是一种能运行于多种平台、源代码公开、免费、功能强大、遵循POSIX标准、与UNIX兼容的操作系统。Linux自20世纪中期以来一直在突飞猛进地发展,人们在计算机软件开发和应用中越来越离不开它。Linux的诞生和发展给全球的软件业带来了新的机遇,也使微软的Windows操作系统面临有史以来最大的挑战。由于Linux属于自由软件,它的源代码是公
19、开的,并遵循通用公共许可证(General Public Licence,GPL),所以用户可以免费使用,从而使Linux在极短的时间内就成了一套成熟而稳定的操作系统。全世界成千上万的程序专家和Linux爱好者正在通过Internet不断地对Linux进行开发、完善和维护【1】。1.3 Linux与Windows操作系统 和Linux一样,Windows是完全的多任务操作系统。它们支持同样的用户接口、网络和安全性。但Windows操作系统是商用的操作系统,由微软公司控制接口和设计。因此,用户无法对Windows做任何改动。 在稳定性方面,Linux和Windows运行的稳定性各有优劣。但Lin
20、ux的任何程序都是相对独立的,哪怕GNOME和KDE(窗口管理程序)也是独立的。因此软件的崩溃难以造成系统的瘫痪(死机)。此时,只要重新运行程序就可以恢复。Windows的死机频率远远高于Linux。在多用户方面,Linux是真正的多用户系统,可以有多个用户真正登录。而相对来说,Windows就很勉强;在对中文的支持方面,Windows的多个版本对于中文的支持是很强的,字体也很漂亮。而Linux虽然也支持中文,但要完全支持中文需要手动做很多设置。不过由于几乎每个软件都要设置字体和字符编码,即使做的再好,任然可能看到中文乱码,而且开源的中文字体基本都不好看。因此,Linux在中文显示上其效果不如
21、Windows;在安全性方面,Windows的安全性是很有问题的,为此,必须安装各种杀毒软件、防火墙、防垃圾软件、防间谍软件等保证安全的软件,而这些软件的安装占去了很多的系统资源。即使这样,还是防不胜防。相对而言,Linux的安全性好很多;在应用软件方面,虽然Linux下的软件有很多,但相比Windows,还是少很多。Linux没有特定的支持厂商,而微软的商业运作很成功;在易用性方面,Windows相当容易上手,而Linux的学习成本则很高,特别是做系统配置时,Linux的复杂性就充分体现出来了。加上Linux的文档材料远不如Windows,这使得Linux的学习应用和使用成本都增加了。 由于
22、受知识产权的限制,所以无论是使用PC平台上的Windows,还是使用应用于大中型机的UNIX,都无法窥视到其内部结构。这些系统很可能存在不为我们所知的漏洞,如果这些漏洞为别有用心者所用,将会产生各种安全问题。操作系统不同于其他软件产品,它是其他应用程序得以运行的平台。由于我们无法获知这些系统的细节,所以我们无法确保计算机应用的安全,长此以往,将会对软件产业发展产生深远的负面影响。 Linux的出现,一方面促进了许多国家软件产业的发展,另一方面,它也为广大的学生提供了一份宝贵的学习资料。目前UNIX、Linux、Windows三种系统三分天下,最终谁能占领市场的主流而成为市场霸主,目前还没有定论
23、。但总的来说,Linux的发展前景是很广阔的【1】。 (1)Linux的起源于发展 Linux的发言为“Lin-noks”,中文发音为“利尼克斯”。它的标志是可爱的企鹅,取自芬兰的吉祥物。 Linux起源于1991年,Linus Torvalds为了编写一个比Minix(由谭邦宁教授开发的一个用于操作系统教学、很小的UNIX操作系统)更好的操作系统,首次在Internet上发布了基于Intel 386 体系结构、类似于UNIX的Linux源代码,这就是最早的Linux版本。由于Linux具有结构清晰、功能简捷等特点,许多高等院校的学生和科研机构的研究人员纷纷把它作为学习和研究的对象。 Linu
24、x的历史是和GNU紧密联系在一起的。从1983年开始的GNU计划(该计划致力于开发一个自由并且完整的类UNIX操作系统,包括软件开发工具和各种应用程序)到1991年Linux内核发布,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于GNU通用公共许可,也就是GPL,但是Linux内核并不是GNU计划的一部分。1994年3月,Linux 1.0版正式发布,Marc Ewing成立了Red Hat软件公司,成为最著名的Linux分销商之一。 现在,Linux的用户群一般都是专业人士
25、。他们愿意安装并设置自己的操作系统,因而往往比其他操作系统的用户要花更多的时间。这些用户有时被称作“黑客”或“极客”(geek)。使用Linux的主要成本为移植、培训和学习的费用,早期由于会使用Linux的人较少,并且在软件设计时并未考虑到非专业者的使用,导致这方面的费用极高。这方面的费用已经随着Linux的日益普及和Linux上的软件越来越多、越来越方便而降低,但这仍是使用Linux的主要成本。 然而随着Linux的慢慢开始流行,有些原始设备制造商(OEM)开始在其销售的电脑上预装上Linux,Linux的用户中也有了普通电脑用户,Linux系统也开始慢慢出现在个人电脑操作系统市场。Linu
26、x在欧洲、美国和日本的流行程度比较高,欧美地区还发行Linux平台的游戏和其他家用软件。Linux开源社区也是以欧洲、美国、日本等发达国家及地区的人士居多。 每个孩子拥有一台笔记本电脑这一项目正在催生新的、更为庞大的Linux用户群,计划将包括发展中国家的几亿学童、他们的家庭和社区。在2007年,已经有6个国家分别订购了至少一百万台的笔记本电脑免费发放给学生。谷歌、RedHat和eBay是该项目的主要支持者【2】。下面简单地回顾一下Linux版本的变化过程: 1991年10月,Linux第一个公开版0.02版发布。 1994年3月,Linux 1.0 版发布。 1999年,Linux 2.2
27、发布:GNOME 1.0 发布;支持Linux 2.2 的Red Hat 6.0 发布;IBM推出全面支持Linux的计划;HP宣布支持Linux。 1999年至2003年,各种Linux版本不断发布,在市场上的影响巨大。 Linux内核最初是为Intel 386 微处理器设计的;现在,Linux内核支持从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。 (2)Linux的内核 Linux内核的最初版本是由Linus Torvalds编写的,为了能够使Linux更加完善,Linus Torvalds在网络锁公开了Linux的源码,邀请全世界的志愿者参与Linux的开发。由于许多专业用
28、户自愿地开发它的应用程序,并借助Internet拿出来让大家一起修改,所以它周边的程序越来越多,Linux得到了不断的完善,并在短时期内迅速崛起,如今仍以相当快的速度在不断地发展着。Linux是一个很有发展前途的操作系统,也是为数不多可以与Microsoft旗下操作系统相竞争的操作系统。 Linux内核由5个主要的子系统组成。这5个子系统分别是进程调度(SCHEN)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)【3】。 各个子系统之间的依赖关系如下: 进程调度与内存管理之间的关系:这两个子系统互相依赖。程序要在多道程序环境下运行,必须为之创建进程,而创建进
29、程的第一件事,就是要将程序和数据装入内存。进程间通信与内存管理之间的关系:进程间通信子系统要依赖内存管理来支持共享内存通信机制,这种机制允许两个进程除了拥有自己的私有内存外,还可存取共同的内存区域。虚拟文件系统与网络接口之间的关系:虚拟文件系统利用网络接口来支持网络文件系统(NFS),利用内存管理来支持RAMDISK设备。 内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统来支持交换,交换进程定期地由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。在这些子系统中,进程调度子系统是其他子系统
30、得以顺利工作的关键。无论是文件系统的系统进程还是网络子系统的服务进程,都需要通过进程调度来获得相应的CPU时间以正常运行【4】。2 需求分析2.1 需求性分析2.1.1 编写目的 随着Linux操作系统的慢慢开始流行,将来会有越来越多的软件运行于Linux操作系统上。本次课题就是以Linux操作系统为基础设计的类似于Windows操作系统的聊天程序,使得很多安装的是Linux操作系统的人士能够像在Windows操作系统上聊天程序一样,方便的进行沟通。 使用已学完的Linux系统、Gtk+界面设计、连接数据库和socket通信等功能来实现聊天系统。2.2 对界面的需求 1)一个显示框:用来显示发
31、送和接受的聊天信息。 2)两个复选框:(1)编辑:用来控制信息显示框来输入信息是否可编辑。 (2)换行:用来控制显示框里面的文本是否可以换行。 3)三个按钮: (1)历史记录按钮:查看历史记录的信息。(2)发送按钮:发 送需要发出的信息。(3)关闭按钮:关闭窗口。 4)一个录入框: 功能是让用户可以输入需要发送的信息。 5)对通信的需求:(1)绑定服务器的IP地址。(2)客户机可以实现发送接 收信息。(3)服务器可以实现发送接收信息。 6)对数据库的需求:聊天信息插入数据库,也可以从数据库里面取出信息。 7)运行环境:Windows 7系统、虚拟机、linux系统、MySql数据库。3 系统应
32、用技术3.1 Gtk+界面设计 Gtk+是Linux环境下用于图形用户界面开发的一个库,现在已成为类UNIX系统下开发图形界面应用程序的主流开发工具之一,并已移植到Windows上了。通过这个库,可以很方便地实现在Linux操作系统中开发图形用户界面【5】。3.1.1 Gtk+基础 最初Gtk+是作为另一个著名的源码项目GIMP(GNU Image Manipulation Program,)的副产品而创建的。GIMP最初是类UNIX操作系统的图像处理程序,现在也被移植到了Windows平台。为了简化GIMP的开发,专门开发了GIMP ToolKit一个生成GUI的工具库(或者,实际上是若干个
33、密切相关的库的集合),这就是Gtk。它是一套跨多种平台的图像工具包,支持创建于GUI的应用程序(可以把Gtk+想象成一个工具包,从这个工具包中可以找到用来创建GUI的许多已经准备好的构造块)。 在增加了面向对象的特性之后,它的名称后面添加了一个加号,于是就成为Gtk+。Gtk+是自由软件,并且是GNU计划的一部分,是按LGPL发布的。3.1.2 Gtk+的主要特点 (1)Gtk+是一个小型而高效的控件库; (2)Gtk+应用程序的国际化(i18n)、本地化(110n)提供了很好的处理工具; (3)Gtk+是可移植的,而且具有多种语言前端; (4)Gtk+为界面设计提供了配套的工具Glade;
34、(5)提供不同的显示引擎,使得最终用户可以制定外观和质感; (6)Gtk+的应用广泛; (7)Gtk+对Windows的支持; (8)Gtk+自身特性。3.1.3 Gtk+的组成 (1)Gtk+工具的应用层次:GTK、GDK、GLIB; (2)Gtk+对象的层次结构:Gtk+中所有的窗口部件(Widgets)有共同的祖先Gtk_Object,所有的可视对象有一个共同的祖先Gtk_Widget; (3)Gtk+图形库构件:提供了窗口、标签、命令按钮、开发按钮等【6】。3.2 socket通信3.2.1 Socket简述 应用层通过传输层进行数据通信时,TCP和UDP会遇到同事为多个应用程序进程提
35、供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为Socket的接口【1】。3.2.2 Socket的主要类型 (1)流式套接字 提供一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接收。 (2)数据报套接字 提供一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。 (3)原始式套接字 该接口允许对较低层协议直接访问,常用于检验新的协议实现或访问现有服务中配置的新设备。 Socket()函数原
36、型:int socket(int don=main,int type,int protocol);3.2.3 Socket组要在如下两类系统中使用 (1)Windows Socket. (2)Linux Socket.3.3 MySql数据库3.3.1 MySql发展历史 MySql的历史最早可以追溯到1979年,有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。 199
37、0年,TcX的customer 中开始有人要求要为它的API提供SQL支持,Monty决心自己重写一个SQL支持。1996年,MySQL 1.0发布,相当于内部发布。 1996年10月,MySQL 3.11.1发布了,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。MySql3.22应该是一个标志性的版本,提供了基本的SQL支持。 MySql关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C+、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(AP
38、Is),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。 MySql是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。1999-2000年,有一家公司在瑞典成立了,叫MySQL AB,雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。 2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向M
39、ySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。 MySql与InnoDB的正式结合版本是4.0。到了MySQL5.0,2003年12月,开始有View,存储过程之类。在2008年1月16号 MySQL被Sun公司收购。3.3.2 MySql的常用命令 (1)使用SHOW语句找出在服务器上当前存在什么数据库 mysql SHOW DATABASES; (2)创建一个数据库MYSQLDATA mysql CREATE DATABASE MYSQLDATA; (3)选择你所创建的数据库 mysql USE MYSQLDATA; (按回车键出现Data
40、base changed 时说明操作成功!) (4)查看现在的数据库中存在什么表 mysql SHOW TABLES; (5)创建一个数据库表 mysql CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1); (6)显示表的结构 mysql DESCRIBE MYTABLE; (7)往表中加入记录 mysql insert into MYTABLE values (”hyq”,”M”); (8)删除表 mysqldrop TABLE MYTABLE; (9)清空表 mysqldelete from MYTABLE; (10)更新表中数据 my
41、sqlupdate MYTABLE set sex=”f” where name=hyq; (11)数据库/数据表/数据列权限 ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 CREATE: 建立新的数据库或数据表。 DELETE: 删除表的记录。 DROP: 删除数据表或数据库。 INDEX: 建立或删除索引。 INSERT: 增加表的记录。 SELECT: 显示/搜索表的记录。 UPDATE: 修改表中已存在的记录。3.3.3 MySql的重要特性 (1)内部结构和可移植性; (2)极快的基于线程的内存分配系统; (3)列类型; (4)语句和函数; (5)安全; (6)连接性
42、; (7)本地化; (8)客户端和工具。4 设计和实现4.1 Gtk+界面设计 (1)服务器端运行结果如图所示: 图4-1 服务器端 (2)客户端运行结果如图所示: 图 4-2 客户端 (3)控制摆放流程图本次实验设计到了hbox、vbox、text、entry以及button等控件的摆放及使用。首先在window窗口中放置一个hbox来方便后来其他控件的摆放。控件摆放如下所示: 图 4-3 控制摆放流程图4.2 连接数据库 (1)连接成功截图 图 4-4 连接成功截图 (2)流程图 图 4-5 流程图4.3 网络通信socket编程4.3.1 socket编程方法 (1)网络连接函数 Soc
43、ket 创建套接字 Bind 绑定本机端口 Connect 建立连接 Listen 监听端口 Accept 接受连接 Recv,recvfrom 数据接收 Send,sendto 数据发送 Close,shutdown 关闭套接字 (2)连接流程图 图 4-6 连接流程图4.3.2 客户端/服务器工作流程 1)服务器 首先,应该在服务器端使用Socket()建立一个通信端口,再用bind()命令把一个地址绑定到这个端口上。然后,服务器端使用listen()监听连接请求,当远程的客户机试图使用connect()连接listen()正在监听的端口时,连接将会在队列中等待,直到使用accept()处
44、理它。在accept()处理了连接请求之后,将会生成一个新的描述这个连接端口的套接字,利用这个套接字就可以发送和接收数据。如果listen()一直没有监听到连接请求,那么服务器任务就会在accept()处阻塞,直到有连接请求到来为止。 2)客户端 客户端处首先用Socket()建立一个通信端口,然后直接用connect()向指定的服务器发送连接请求,如果请求被接收,下一步就可以进行数据通信了。 3)函数格式 (1)Socket() 作用:socket函数为客户机或服务器创建一个sokcet 格式:int socket(int family) Family 表示地址族 (2)bind( ) 作用:bind函数是将套接字绑定到IP地址 格式: int bind(int sockfd,struct sockaddr *addr,int addrlen) 参数说明:Sockfd:socket的文件描述符号;Sockaddr:表示名字所用的一个数据结构,用来保存地址(包括IP地址和端口);Addrlen:设置结构