快速业务通道

Java编程那些事儿109——网络编程示例2 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

Java编程那些事儿109——网络编程示例2

时间:2010-03-20 csdn 陈跃峰

13.3.2 猜数字小游戏

下面这个示例是一个猜数字的控制台小游戏。该游戏的规则是:当客户端第一次连接到服务器端时,服务器端生产一个「0,50」之间的随机数字,然后客户端输入数字来猜该数字,每次客户端输入数字以后,发送给服务器端,服务器端判断该客户端发送的数字和随机数字的关系,并反馈比较结果,客户端总共有5次猜的机会,猜中时提示猜中,当输入“quit”时结束程序。

和前面的示例类似,在进行网络程序开发时,首先需要分解一下功能的实现,觉得功能是在客户端程序中实现还是在服务器端程序中实现。区分的规则一般是:客户端程序实现接收用户输入等界面功能,并实现一些基础的校验降低服务器端的压力,而将程序核心的逻辑以及数据存储等功能放在服务器端进行实现。遵循该原则划分的客户端和服务器端功能如下所示。

客户端程序功能列表:

1、接收用户控制台输入

2、判断输入内容是否合法

3、按照协议格式发送数据

4、根据服务器端的反馈给出相应提示

服务器端程序功能列表:

1、接收客户端发送数据

2、按照协议格式解析数据

3、判断发送过来的数字和随机数字的关系

4、根据判断结果生产协议数据

5、将生产的数据反馈给客户端

在该示例中,实际使用的网络命令也只有两条,所以显得协议的格式比较简单。

其中客户端程序协议格式如下:

1、将用户输入的数字转换为字符串,然后转换为byte数组

2、发送“quit”字符串代表退出

Java编程那些事儿109——网络编程示例2(2)

时间:2010-03-20 csdn 陈跃峰

其中服务器端程序协议格式如下:

1、反馈长度为1个字节,数字0代表相等(猜中),1代表大了,2代表小了,其它数字代表错误。

实现该程序的代码比较多,下面分为客户端程序实现和服务器端程序实现分别进行列举。

客户端程序实现代码如下:

package guess; import java.net.*; import java.io.*; /** * 猜数字客户端 */ public class TCPClient { public static void main(String[] args) { Socket socket = null; OutputStream os = null; InputStream is = null; BufferedReader br = null; byte[] data = new byte[2]; try{ //建立连接 socket = new Socket( "127.0.0.1",10001); //发送数据 os= socket.getOutputStream(); //读取反馈数据 is = socket.getInputStream(); //键盘输入流 br = new BufferedReader( new InputStreamReader(System.in)); //多次输入 while(true){ System.out.println("请输入数字:"); //接收输入 String s = br.readLine(); //结束条件 if(s.equals("quit")){ os.write("quit".getBytes()); break; } //校验输入是否合法 boolean b = true; try{ Integer.parseInt(s); }catch(Exception e){ b = false; } if(b){ //输入合法 //发送数据 os.write(s.getBytes()); //接收反馈 is.read(data); //判断 switch(data[0]){ case 0: System.out.println("相等!祝贺你!"); break; case 1: System.out.println("大了!"); break; case 2: System.out.println("小了!"); break; default: System.out.println("其它错误!"); } //提示猜的次数 System.out.println("你已经猜了" + data[1] + "次!"); //判断次数是否达到5次 if(data[1] >= 5){ System.out.println("你挂了!"); //给服务器端线程关闭的机会 os.write("quit".getBytes()); //结束客户端程序 break; } }else{  //输入错误 System.out.println("输入错误!"); } } }cat

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号