分布式计算:将Socket实验修改为服务端多线程程序,并测试完成
2017-04-23 00:18
489 查看
服务端:
package ServerMultithreadedProgram; import java.net.ServerSocket; import java.net.Socket; public class Server { private static ServerSocket ServerSocket = null; static { try { ServerSocket = new ServerSocket(9090); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { try { System.out.println("服务器已启动,等待客户端连接"); Socket socket = null; while (true) { socket = ServerSocket.accept(); new ServerThread(socket).start(); } } catch (Exception e) { e.printStackTrace(); } } }
服务线程类:
package ServerMultithreadedProgram; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ServerThread extends Thread{ private Socket client; public ServerThread(Socket socket) { this.client = socket; } public void run() { BufferedReader br = null; PrintWriter pw = null; String str; try { br = new BufferedReader(new InputStreamReader(client.getInputStream())); pw = new PrintWriter(client.getOutputStream()); while ((str = br.readLine()) != null) { System.out.println("收到请求" + str); pw.println("服务端收到请求:" + str); pw.flush(); if (str.equals("end")) { System.out.println("end"); break; } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } pw.close(); try { client.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
用户类:
package ServerMultithreadedProgram; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class Client2 { public static void main(String[] args) { Socket server = null; BufferedReader br = null; BufferedReader wt = null; PrintWriter pw = null; try { server = new Socket("127.0.0.1", 9090); br = new BufferedReader(new InputStreamReader(server.getInputStream())); wt = new BufferedReader(new InputStreamReader(System.in)); pw = new PrintWriter(server.getOutputStream()); } catch (Exception e) { e.printStackTrace(); } String str = ""; while (true) { try { str = wt.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } pw.println(str); pw.flush(); if (str.equals("end")) { System.out.println("通讯结束end"); break; } try { System.out.println(br.readLine()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } try { br.close(); pw.close(); wt.close(); server.close(); } catch (Exception e) { e.printStackTrace(); } } }
说明,只是将Server/Client改成服务端多线程版本。
相关文章推荐
- socket编程,简单多线程服务端测试程序
- CookIM - 基于akka的分布式w 3ff8 ebsocket聊天程序,服务端支持多节点间消息通讯
- 多线程Socket服务端处理程序
- 使用SOCKET API写的客户端与服务端测试程序(C语言)
- C++程序设计实验报告(十六)----用循环控制语句编写程序,完成表达式的计算
- c# 计算程序执行时间,计算一段代码执行所用的时间,测试效率
- 完成了一个潮流计算程序
- 一个消息提示托盘程序的开发历程(采用socket技术,附源代码)二---服务端源代码
- 一个多socket绑定同一个端口的测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 代码客:G-Socket(IOCP) 1.0(Server/Client)例程源码+Server体验程序+强大的压力测试工具
- 帮同学写的题:设计一个程序完成下面的计算:k!/(m!+n!)
- c# WINFORM SOCKET编程-简单聊天程序(服务端)
- LoadRunner测试J2ME的Socket程序
- 测试数值计算程序要注意的问题
- 用Socket实现的简单客户端和服务端程序(一)
- 支持多线程的 现成的 socket 通信程序
- SOCKET测试脚本,附带源码和服务端
- PKU2894线上测试A题,三十分钟理解题意完成程序一遍AC
- 使用C/C++实现Socket聊天程序(代码+实验报告)