
SERVICE PHONE
363050.com发布时间:2025-08-30 23:28:42 点击量:
开元棋牌,开元棋牌官网,开元棋牌下载,开元娱乐,棋牌游戏平台,棋牌真钱游戏,注册送彩金棋牌,棋牌游戏,棋牌平台
本文设计讨论了Socket机制,阐述了使用Java语言编写基于客户/服务器模式的网络通讯程序方法。服务器的一个必需机能,就是能对多个客户的请求同时做出响应。利用Java的Socket机制和多线程机制进行多用户的Client/Server网络程序设计。Socket是基于TCP/IP的网络上运行的两个程序间双向通讯的一种连接机制中包含Socket类,用以快速地开发网络通信程序。在TCP/IP协议体系结构的基础上,分析了网络通信原理,结合Socket总结出网络通信编程的基本模型,介绍Java的网络编程实现。主要是对Socket类和ServerSocket类的调用。
Socket类主要实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器之间的通信端点。套接字的实际工作由SocketImpl类的实例执行。
ServerSocket类类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。服务器套接字的实际工作由SocketImpl类的实例执行。
通过对网络通信编程知识的掌握和运用Java语言来实现一种简单的网络棋牌室平台,主要包括一种游戏和聊天功能。
网络棋牌游戏平台在在目前的休闲游戏市场上有着很大份额,给用户提供一个相互交流学习的平台,也是目前大多数网民娱乐的主要方式。
而时下,无论是网络游戏还是单机游戏,真正适合中小学生玩的具有寓教于乐意义的游戏可谓少之又少,且后继乏力。而血腥暴力游戏对青少年的过度侵蚀,则在很大程度上成为引发近来青少年社会问题的直接诱因之一。但一味的封堵青少年玩游戏近乎不可能,多年前禁止青少年逗留三室两厅的成效不太理想的情景,如今还历历在目。唯一可取之法就是开源节流,以大禹之“导”代替鲧之“堵”,尽可能的将黄色暴力游戏,这一对青少年身心健康有极大影响的洪水猛兽的巨大破坏力消弭无形。在这种形式下,涉足教育的网络游戏便应时而生,成为了一个热门话题。在当今如此盛行网络游戏的时代,教育网游的诞生不能不说是一个绝好的切入点。
因此网络棋牌游戏就更适合于教育网游。与一般传统的角色扮演类游戏相比网络棋牌游戏的开发更适合于如今网游的发展趋势,使得更多的人从事于网络棋牌游戏平台的开发,从另一方面更可以使如今的青少年远离一些血腥暴力游戏所带来的危害。益智休闲类游戏不仅满足青少年对游戏的需要,也是一中促进智力发展的手段。
用Java语言对本次对网络棋牌游戏平台的设计可以比较深入的了解Java的Socket网络编程,对客户端和服务器的设计更能对两台主机之间的连接的Socket进行七项基本的操作如:
连接远程机器、发送数据、接收数据、关闭连接、绑定端口、监听入站数据,在所绑定端口上接收来自远程机器的连接。
主要研究的内容是使用JAVA Network API操纵套接字和对多种API的调用来设计服务器和客户端的界面设计。
由于国内的软件开发的起步晚于国外,导致国内的网络游戏的平台开发都依赖于国外的支持,随着时间的推移技术的发展使得国内的软件有了大幅度的提升。国内网络游戏市场处于高速发展阶段,市场规模与用户数都高速增长。一亿多的互联网用户上网的最主要动机是休闲娱乐,而网络游戏是休闲娱乐的主要形式。网络游戏是以互联网为依托,可以使用不同的游戏终端、多人同时参与的游戏活动。网络游戏有多种类型,按照游戏内容架构可以分为角色扮演类(MMORPG)、休闲类(包括动作类、经营类、棋牌类)和益智类。和其它网络游戏相比,线上棋牌娱乐平台无论是在用户基数,用户稳定忠实性上,还是在提供的产品服务上,都有显著的优势和区别。游戏的发展还是随着对市场的适应,教育网游是时下比较提倡的一种方式从而休闲游戏平台的设计就变的有意义,提出网络棋牌室平台的设计和实现的课题。
国内在网络棋牌游戏平台的开发道路上,作为我国第一家棋牌类游戏网站,联众公司有一定的代表性。联众是中国第一个完全以棋牌游戏竞技为经营核心的网站。三年前,国内的用户只能到国外的网站上才能玩到在线棋牌游戏,只能接受非民族化的游戏服务。联众的出现填补了这个空白,彻底改变了这种状况,开创了第一个继承发扬中国文化特色的互联网游戏。目前国内的棋牌游戏平台包括QQ游戏、联众、中游,以及近来收归盛大旗下的边锋,全国过亿的在线棋牌游戏玩家当中,几乎绝大部分都分布在此几家的游戏平台之上,每日的黄金时段里,这几大平台的同时在线人数已达到数百万之巨。他们都形成了较为成熟的赢利模式,如网络广告、与电信供应商分成、会员制度、产品销售、电子商务、举办竞赛及收费游戏等。
从前,在对平台的设计上实现的功能只是完成简单的一种网络棋牌游戏对弈和聊天,而如今的网络平台都讲究更多的交流和互动性,特别在对游戏的设计上更多的是针对地区性的棋牌游戏的设计来吸收更多的地方用户。从总体的调查上来看以前的棋牌游戏都过多的基于大众方面来对游戏的设计,现在更多的投入就在于对游戏设计的针对性。从用户的方面看来用户对自己所在地方的有地方特色的游戏的兴趣度远远高于一般的游戏规则。现在各家棋牌游戏平台公司都在吸收更多的用户来获得更多的盈利,因此网络棋牌的发展越来越趋进于多元化地方化,平台上所能提供的服务也在不断的完善。
要开发一个简单功能实现的网络棋牌室平台,具有一种游戏的实现和达到用户间交流的目的,各种控键都比较容易使用。
第一、服务器设计:用Java中各种类的调用完成框架的设计,所拥有的功能则是能够完成一些信息的输出主要包括本地的IP地址用户登入的信息和公共聊天的内容,在控制的按键上则有清除显示、服务器状况、关闭服务器选项。
第二、客户端设计:用Java中各种类的调用完成框架的设计,主界面上有四块面版包括userpad、chatpad、chesspad、controlpad、inputpad。用来实现连接服务器、创建游戏、加入游戏、聊天等功能。
第三、通过Java网络编程中的socket编程来实现服务器和客户端的通讯,从而实现一中平台的设计,来满足用户间的交流和对弈。
JCreator 是一个Java程序开发工具,也是一个Java集成开发环境(IDE)。无论你是要开发Java应用程序或者网页上的Applet元件都难不倒它。在功能上与Sun公司所公布的JDK等文字模式开发工具相较之下来得容易,还允许使用者自订义操作窗口界面及无限Undo/Redo等功能。
JCreator为用户提供了相当强大的功能,例如项目管理功能,项目模板功能,可个性化设置语法高亮属性、行数、类浏览器、标签文档、多功能编绎器,向导功能以及完全可自定义的用户界面。通过JCreator,我们不用激活主文档而直接编绎或运行我们的JAVA程序。
JCreator能自动找到包含主函数的文件或包含Applet的Html文件,然后它会运行适当的工具。在JCreator中,我们可以通过一个批处理同时编译多个项目。JCreator的设计接近Windows界面风格,用户对它的界面比较熟悉。其最大特点是与我们机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。它是一种初学者很容易上手的java开发工具,缺点是只能进行简单的程序开发,不能进行企业J2EE的开发应用。
基于以上考虑,我决定采用JCreator作为开发这个软件的工具,以Windows作为这个软件的运行平台。
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
抽象(abstract)就是忽略一个问题中与当前目标无关的那些方面,以便将注意力放在与当前目标有关的方面。抽象并不打算解决全部问题,而只是选择其中的一部分,暂时不考虑一些细节问题。抽象包括过程抽象和数据抽象,过程抽象是指任何一个明确定义功能的操作都可被使用作为单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成;数据抽象定义了数据类型和施加于该类型对象上的操作。
封装(encapsulation)是面向对象程序设计的一个主要特征。封装就是把每个对象的数据(属性)和操作(方法)包装在一个类中。一旦定义了对象的属性和行为,则必须决定哪些属性和行为用于表示内部状态,哪些属性和行为在外部是可见的。一般限制直接访问对象的属性,而应通过操作接口访问,这样使程序中模块之间关系更简单、数据更安全。对程序的修改也仅限于类的内部,使得由于修改程序所带来的影响局部化。
继承(inheritance)是指一个新类可以从现有的类派生而来。新类继承了现有类的特性,包括一些属性和行为,并且可以修改或增加新的属性和行为,使之适合具体的需要。例如,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的,但有的应用程序用于文字处理,有的则用于绘图,这是由于派生出了不同的类,它们增加了不同的属性和行为。继承很好地解决了软件的可重用性问题。
多态性(polymorphism)是指允许不同类的对象对同一消息作出的响应不相同。例如,同样的“编辑粘贴”操作,在字处理程序和绘图程序中有不同的结果;同样的加法,把两个时间值相加和把两个整数相加的要求肯定不同。多态性使程序设计灵活、抽象,具有行为共享和代码共享的优点,很好地解决了程序的函数同名问题。
通过使用面向对象程序设计的抽象、封装、继承和多态性等机制,程序更易于维护、更新和升级。利用代码可重用性,程序员可以在程序中大量使用程序的类库,从而缩短程序的开发时间,提高程序员的工作效率和程序的可靠性。
Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。具体来说,它具有如下特性:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。与C++等语言相比较,语法上Java是简单的。
Java提供了垃圾回收机制。以往C++的开发中,最容易出错误的地方便是内存管理,申请的内存用完以后必须释放,否则可使用的内存资源越来越少,直至耗尽系统资源而造成死机。而Java系统中,你可以任意申请内存,Java系统会在适当的时候自动释放无用的内存资源。这个神奇的机制叫做“垃圾回收”,节约了许多调试错误的时间。
在Java中,要写出低劣的代码也不是一件容易的事情。一方面,垃圾回收机制堵住了内存泄漏的可能性,另一方面就是异常捕捉机制,它强迫你做最坏的打算。编写程序时,难免会遇到一些意外,比如文件无法打开、网络读取失败等特殊情况。在C++等语言中是依靠返回值来判断的,如果一句句地检查返回值,那实在是太麻烦了。从而,程序员习惯性地忽略返回值的检查,并安慰自己一切都会好起来的。这便埋下了隐患。在Java中,Java的方法可以抛异常,而你必须应答异常,即使你不想进行任何操作。比如编写打开文件的代码,你不得不响应异常以防意外发生,否则程序根本不能够通过编译。未雨绸缪,使得Java系统更稳健。
Java语言是第一个完全融入网络的语言,它之所以适合编写网络应用程序,归功于它的以下优势。
(1)Java语言与生俱来就是与平台无关的。Java程序能够运行在不同的平台上,运行在不同平台上的Java程序能够方便地进行网络通信。
(2)Java语言具有完善的安全机制,可以对程序进行权限检查,这对网络程序至关重要。
(3)JDK类库提供了丰富的网络类库,如套接字API、JavaMail API和JDBC API等,大大简化了网络程序的开发过程。
Network API是典型的用于基于TCP/IP网络Java程序与其他程序通讯,Network API依靠Socket进行通讯。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。如图2-1
我们来分析一下图2-1,Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。
假设在图2-1的网络中添加第三个主机Host C,那么Host A怎么知道信息被正确传送到Host B而不是被传送到Host C中了呢?基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的无符号整数,由于没有转变成二进制,因此通常以小数点分隔,如:198.163.227.6,正如所见IP地址均由四个部分组成,每个部分的范围都是0-255,以表示8位地址。
值得注意的是IP地址都是32位地址,这是IP协议版本4(简称Ipv4)规定的,目前由于IPv4地址已近耗尽,所以IPv6地址正逐渐代替Ipv4地址,Ipv6地址则是128位无符号整数。
假设第二个程序被加入图2-1的网络的Host B中,那么由Host A传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留Socket中的输入/输出信息,端口号是一个16位无符号整数,范围是0-65535,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的短口号保留给标准应用程序,比如pop3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体就可以区别每一个套接字t,下面我们就来谈谈两种套接字:流套接字和自寻址数据套接字。
无论何时,在两个网络应用程序之间发送和接收信息时都需要建立一个可靠的连接,流套接字依靠TCP协议来保证信息正确到达目的地,实际上,IP包有可能在网络中丢失或者在传送过程中发生错误,任何一种情况发生,作为接受方的 TCP将联系发送方TCP重新发送这个IP包。这就是所谓的在两个流套接字之间建立可靠的连接。
流套接字在C/S程序中扮演一个必需的角色,客户机程序(需要访问某些服务的网络应用程序)创建一个扮演服务器程序的主机的IP地址和服务器程序(为客户端应用程序提供服务的网络应用程序)的端口号的流套接字对象。
客户端流套接字的初始化代码将IP地址和端口号传递给客户端主机的网络管理软件,管理软件将IP地址和端口号通过NIC传递给服务器端主机;服务器端主机读到经过NIC传递来的数据,然后查看服务器程序是否处于监听状态,这种监听依然是通过套接字和端口来进行的;如果服务器程序处于监听状态,那么服务器端网络管理软件就向客户机网络管理软件发出一个积极的响应信号,接收到响应信号后,客户端流套接字初始化代码就给客户程序建立一个端口号,并将这个端口号传递给服务器程序的套接字(服务器程序将使用这个端口号识别传来的信息是否是属于客户程序)同时完成流套接字的初始化。
如果服务器程序没有处于监听状态,那么服务器端网络管理软件将给客户端传递一个消极信号,收到这个消极信号后,客户程序的流套接字初始化代码将抛出一个异常对象并且不建立通讯连接,也不创建流套接字对象。这种情形就像打电话一样,当有人的时候通讯建立,否则电话将被挂起。
当客户程序需要与服务器程序通讯的时候,客户程序在客户机创建一个socket对象,Socket类有几个构造函数。两个常用的构造函数是 Socket(InetAddress addr, int port) 和 Socket(String host, int port),两个构造函数都创建了一个基于Socket的连接服务器端流套接字的流套接字。对于第一个InetAddress子类对象通过addr参数获得服务器主机的IP地址,对于第二个函数host参数包被分配到InetAddress对象中,如果没有IP地址与host参数相一致,那么将抛出UnknownHostException异常对象。两个函数都通过参数port获得服务器的端口号。假设已经建立连接了,网络API将在客户端基于Socket的流套接字中捆绑客户程序的IP地址和任意一个端口号,否则两个函数都会抛出一个IOException对象。
如果创建了一个Socket对象,那么它可能通过调用Socket的 getInputStream()方法从服务程序获得输入流读传送来的信息,也可能通过调用Socket的 getOutputStream()方法获得输出流来发送消息。在读写活动完成之后,客户程序调用close()方法关闭流和流套接字,下面的代码创建了一个服务程序主机地址为198.163.227.6,端口号为13的Socket对象,然后从这个新创建的Socket对象中读取输入流,然后再关闭流和Socket对象。