Java多线程Socket操作猜数游戏样例

               

FROM:http://www.java2000.net/viewthread.jsp?tid=686

1 服务器端程序,接受连接并处理客户端的请求

ServerApp.java

Java多线程Socket操作猜数游戏样例package test;
Java多线程Socket操作猜数游戏样例
import java.io.*;
Java多线程Socket操作猜数游戏样例
import java.net.*;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例
/** *//**
Java多线程Socket操作猜数游戏样例 * 服务器端程序
Java多线程Socket操作猜数游戏样例 * 
Java多线程Socket操作猜数游戏样例 * 
@author luxuan310,修正赵学庆。
Java多线程Socket操作猜数游戏样例 * 
Java多线程Socket操作猜数游戏样例 
*/

Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例
public class ServerApp ...{
Java多线程Socket操作猜数游戏样例  
static final int PORT = 9000;
Java多线程Socket操作猜数游戏样例  
private ServerSocket serverSocket;
Java多线程Socket操作猜数游戏样例  
private Socket socket;
Java多线程Socket操作猜数游戏样例  
private BufferedReader netIn;
Java多线程Socket操作猜数游戏样例  
private PrintWriter netOut;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例  
public ServerApp() throws IOException ...{
Java多线程Socket操作猜数游戏样例    serverSocket 
= new ServerSocket(PORT);
Java多线程Socket操作猜数游戏样例    System.out.println(
"server start");
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例    
while (true...{
Java多线程Socket操作猜数游戏样例      
// 等待连接
Java多线程Socket操作猜数游戏样例
      socket = serverSocket.accept();
Java多线程Socket操作猜数游戏样例      ServerThread st 
= new ServerThread(socket);
Java多线程Socket操作猜数游戏样例      
new Thread(st).start();
Java多线程Socket操作猜数游戏样例    }

Java多线程Socket操作猜数游戏样例  }

Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例  
class ServerThread implements Runnable ...{
Java多线程Socket操作猜数游戏样例    
private Socket socket;
Java多线程Socket操作猜数游戏样例    
private int randomNumber;
Java多线程Socket操作猜数游戏样例    
private int clientGuessNumber;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例    
public ServerThread(Socket s) throws IOException ...{
Java多线程Socket操作猜数游戏样例      socket 
= s;
Java多线程Socket操作猜数游戏样例      netIn 
= new BufferedReader(new InputStreamReader(socket.getInputStream()));
Java多线程Socket操作猜数游戏样例      netOut 
= new PrintWriter(socket.getOutputStream());
Java多线程Socket操作猜数游戏样例    }

Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例    
public void run() ...{
Java多线程Socket操作猜数游戏样例      System.out.println(
"client" + socket.getInetAddress() + " is connect");
Java多线程Socket操作猜数游戏样例      randomNumber 
= (int) (Math.random() * 100);
Java多线程Socket操作猜数游戏样例      System.out.println(
"random number is:" + randomNumber);
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      
try ...{
Java多线程Socket操作猜数游戏样例        clientGuessNumber 
= Integer.parseInt(netIn.readLine());
Java多线程Socket操作猜数游戏样例        System.out.println(
"client guess number is:" + clientGuessNumber);
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例        
for (int i = 3; i > 0; i--...{
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例          
if (clientGuessNumber == randomNumber) ...{
Java多线程Socket操作猜数游戏样例            netOut.println(
"OK,恭喜,猜对了");
Java多线程Socket操作猜数游戏样例            ClientApp.finished 
= true;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例          }
 else if (clientGuessNumber < randomNumber) ...{
Java多线程Socket操作猜数游戏样例            netOut.println(
"您猜的数小了,您还有" + (i - 1+ "次机会");
Java多线程Socket操作猜数游戏样例            ClientApp.finished 
= false;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例          }
 else if (clientGuessNumber > randomNumber) ...{
Java多线程Socket操作猜数游戏样例            netOut.println(
"您猜的数大了,您还有" + (i - 1+ "次机会");
Java多线程Socket操作猜数游戏样例            ClientApp.finished 
= false;
Java多线程Socket操作猜数游戏样例          }

Java多线程Socket操作猜数游戏样例          netOut.flush();
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例          
if (!ClientApp.finished) ...{
Java多线程Socket操作猜数游戏样例            clientGuessNumber 
= Integer.parseInt(netIn.readLine());
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例          }
 else ...{
Java多线程Socket操作猜数游戏样例            
break;
Java多线程Socket操作猜数游戏样例          }

Java多线程Socket操作猜数游戏样例        }

Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例        
if (!ClientApp.finished) ...{
Java多线程Socket操作猜数游戏样例          netOut.println(
"OK,您没有机会了,游戏结束");
Java多线程Socket操作猜数游戏样例        }

Java多线程Socket操作猜数游戏样例        ClientApp.finished 
= true;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      }
 catch (IOException e) ...{
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      }
 finally ...{
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例        
try ...{
Java多线程Socket操作猜数游戏样例          netOut.close();
Java多线程Socket操作猜数游戏样例          netIn.close();
Java多线程Socket操作猜数游戏样例          socket.close();
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例        }
 catch (IOException ee) ...{
Java多线程Socket操作猜数游戏样例        }

Java多线程Socket操作猜数游戏样例      }

Java多线程Socket操作猜数游戏样例    }

Java多线程Socket操作猜数游戏样例  }

Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例  
public static void main(String[] args) throws IOException ...{
Java多线程Socket操作猜数游戏样例    
new ServerApp();
Java多线程Socket操作猜数游戏样例  }

Java多线程Socket操作猜数游戏样例}

2 客户端程序,发送每次猜的数字

Java多线程Socket操作猜数游戏样例package test;
Java多线程Socket操作猜数游戏样例
import java.io.*;
Java多线程Socket操作猜数游戏样例
import java.net.*;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例
public class ClientApp ...{
Java多线程Socket操作猜数游戏样例  
private Socket socket;
Java多线程Socket操作猜数游戏样例  
private BufferedReader netIn;
Java多线程Socket操作猜数游戏样例  
private PrintWriter netOut;
Java多线程Socket操作猜数游戏样例  
private BufferedReader keyboardIn;
Java多线程Socket操作猜数游戏样例  
static Boolean finished = false;
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例  
public ClientApp() throws IOException ...{
Java多线程Socket操作猜数游戏样例    System.out.println(
"请输入服务器地址,连接本地服务器请输入localhost");
Java多线程Socket操作猜数游戏样例    keyboardIn 
= new BufferedReader(new InputStreamReader(System.in));
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例    
try ...{
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      
if (keyboardIn.readLine().equalsIgnoreCase("localhost")) ...{
Java多线程Socket操作猜数游戏样例        socket 
= new Socket(InetAddress.getLocalHost(), ServerApp.PORT);
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      }
 else ...{
Java多线程Socket操作猜数游戏样例        socket 
= new Socket(InetAddress.getByName(keyboardIn.readLine()), ServerApp.PORT);
Java多线程Socket操作猜数游戏样例      }

Java多线程Socket操作猜数游戏样例      netIn 
= new BufferedReader(new InputStreamReader(socket.getInputStream()));
Java多线程Socket操作猜数游戏样例      netOut 
= new PrintWriter(socket.getOutputStream());
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例    }
 catch (UnknownHostException e) ...{
Java多线程Socket操作猜数游戏样例      System.err.println(
"连接不到服务器");
Java多线程Socket操作猜数游戏样例      System.exit(
-1);
Java多线程Socket操作猜数游戏样例    }

Java多线程Socket操作猜数游戏样例    System.out.println(
"连接成功");
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例    
while (!finished) ...{
Java多线程Socket操作猜数游戏样例      System.out.println(
"请输入0-100之间的数字");
Java多线程Socket操作猜数游戏样例      netOut.println(keyboardIn.readLine());
Java多线程Socket操作猜数游戏样例      netOut.flush();
Java多线程Socket操作猜数游戏样例      String str 
= netIn.readLine();
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      
if (str == null...{
Java多线程Socket操作猜数游戏样例        finished 
= true;
Java多线程Socket操作猜数游戏样例        
break;
Java多线程Socket操作猜数游戏样例      }

Java多线程Socket操作猜数游戏样例      System.out.println(str);
Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例      
if (str.startsWith("OK")) ...{
Java多线程Socket操作猜数游戏样例        finished 
= true;
Java多线程Socket操作猜数游戏样例        
break;
Java多线程Socket操作猜数游戏样例      }

Java多线程Socket操作猜数游戏样例    }

Java多线程Socket操作猜数游戏样例    netIn.close();
Java多线程Socket操作猜数游戏样例    netOut.close();
Java多线程Socket操作猜数游戏样例    keyboardIn.close();
Java多线程Socket操作猜数游戏样例    socket.close();
Java多线程Socket操作猜数游戏样例  }

Java多线程Socket操作猜数游戏样例Java多线程Socket操作猜数游戏样例  
public static void main(String[] args) throws IOException ...{
Java多线程Socket操作猜数游戏样例    
new ClientApp();
Java多线程Socket操作猜数游戏样例  }

Java多线程Socket操作猜数游戏样例}

3 运行效果

Java多线程Socket操作猜数游戏样例







<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow