Java基于多线程的网络通信实现服务器计算正方形面积
2017-04-04 13:16
846 查看
服务器端
服务线程
客户端
先启动服务器端,再启动客户端,输入正方形边长后,服务器计算面积并返回客户端
启动服务器
启动客户端并输出边长得到结果
接收到边长后服务器显示
public class Client { /** * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws IOException{ //获得服务器端套接口 Socket serverSocket=new Socket("127.0.0.1",6666); //通过Scanner获取键盘输入 Scanner keyInput=new Scanner(System.in); System.out.println("Input side:"); //按行读取键盘输入 String strLine=keyInput.nextLine(); try { //获得服务器输入流 OutputStream output=serverSocket.getOutputStream(); //获得服务器输出流 InputStream input=serverSocket.getInputStream(); PrintWriter printWriter=new PrintWriter(output,true); printWriter.println(strLine); BufferedReader bufReader=new BufferedReader(new InputStreamReader(input)); System.out.println(bufReader.readLine()); serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } }
服务线程
public class ServerThread extends Thread{ //客户端套接端口 private Socket clientSocket; //客户端输入流 private InputStream clientInput; //客户端输出流 private OutputStream clientOutput; /** * * @param socket * @throws IOException */ public ServerThread(Socket socket)throws IOException{ this.clientSocket=socket; this.clientInput=clientSocket.getInputStream(); this.clientOutput=clientSocket.getOutputStream(); this.start(); } public void run(){ try { //构造输入流缓存 BufferedReader bufReader=new BufferedReader(new InputStreamReader(clientInput)); //按行读取输入内容 String strLine=bufReader.readLine(); if("OVER".equalsIgnoreCase(strLine)){ //结束输入流 PrintWriter printWriter=new PrintWriter(clientOutput,true); printWriter.println("OVER"); }else{ //输入正方形边长,并输出其边长和面积 double side=Double.parseDouble(strLine); System.out.println("Side of Square Received : "+side); double squareArea=side*side; String str="Side: "+side+" Square:"+squareArea; PrintWriter printWriter=new PrintWriter(clientOutput,true); printWriter.println(str); System.out.println("Finish sending to client!"); } clientInput.close(); clientOutput.close(); clientSocket.close(); } catch (Exception e) { e.printStackTrace(); }{ } } }
客户端
public class Client { /** * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws IOException{ //获得服务器端套接口 Socket serverSocket=new Socket("127.0.0.1",6666); //通过Scanner获取键盘输入 Scanner keyInput=new Scanner(System.in); System.out.println("Input side:"); //按行读取键盘输入 String strLine=keyInput.nextLine(); try { //获得服务器输入流 OutputStream output=serverSocket.getOutputStream(); //获得服务器输出流 InputStream input=serverSocket.getInputStream(); PrintWriter printWriter=new PrintWriter(output,true); printWriter.println(strLine); BufferedReader bufReader=new BufferedReader(new InputStreamReader(input)); System.out.println(bufReader.readLine()); serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } }
先启动服务器端,再启动客户端,输入正方形边长后,服务器计算面积并返回客户端
启动服务器
启动客户端并输出边长得到结果
接收到边长后服务器显示
相关文章推荐
- 基于非阻塞socket的多线程服务器的实现------一个服务器如何与多个客户端进行通信?
- JAVA网络编程实现基于TCP协议的时间服务(向服务器查询当前时间)
- JAVA Socket应用学习——基于TCP协议实现的网络通信
- Java基于UDP实现服务器和多客户端之间的通信
- 基于tesseract的多线程OCR服务器的JAVA实现
- Java网络编程ServerSocket的实现服务器与用户之间的通信的基本步骤
- Java实现服务器与客户端网络通信
- 实现了UI的简单群聊(java的IO流和多线程,网络通信)
- Android 网络:基于TCP协议通信,多线程,实现简单的C/S聊天室
- Java网络编程(基于TCP和UDP的通信实现)
- Java基于TCP实现服务器和多客户端之间的通信
- java服务器开发:基于mina的网络通信模块
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- java网络编程学习之——构建基于多线程的网络通信模型1
- Linux Socket 网络编程 基于GTK+ 的多线程实现的局域网通信软件
- Java基于Socket实现简单的多线程回显服务器功能示例
- Linux Socket 网络编程 基于GTK+ 的多线程实现的局域网通信软件
- 基于MYSQL的 网络游戏 多线程 数据库 服务器 设计与实现
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现