猜字游戏

先运行服务器端

import java.net.*;
/**
 * TCP连接方式的服务器端
 * 实现功能:接收客户端的数据,判断数字关系
 */
public class TCPServer {
  public static void main(String[] args) {
         try{
                   //监听端口
                   ServerSocket ss = new ServerSocket(10001);
                   System.out.println("服务器已启动:");
                   //逻辑处理
                   while(true){
                            //获得连接
                            Socket s = ss.accept();
                            //启动线程处理
                            new LogicThread(s);
                   }
                  
         }catch(Exception e){
                   e.printStackTrace();
         }
  }
      }
     

在运行客户端

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("输入错误!");
                            }
                   }
         }catch(Exception e){
                   e.printStackTrace();
         }finally{
                   try{
                            //关闭连接
                            br.close();
                            is.close();
                            os.close();
                            socket.close();
                   }catch(Exception e){
                            e.printStackTrace();
                   }
         }
  }
      }

结果如图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值