基于Socket的服务端的多线程模式编程案列
来源:互联网 发布:澳洲社交软件 编辑:程序博客网 时间:2024/06/05 03:02
基于Socket的服务端的多线程模式编程
下面是服务端的实现
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class MultiThreadEchoServer { private static ExecutorService tp= Executors.newCachedThreadPool(); static class HandleMsg implements Runnable{ Socket clientSocket; public HandleMsg(Socket clientSocket) { this.clientSocket = clientSocket; } @Override public void run() { BufferedReader is=null; PrintWriter os=null; try { is=new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); os=new PrintWriter(clientSocket.getOutputStream(),true); String inputLine=null; long b=System.currentTimeMillis(); System.out.println("from client: "+is.readLine()); while ((inputLine=is.readLine())!=null){ os.println(inputLine); } long e=System.currentTimeMillis(); System.out.println("spend:"+(e-b)+"ms"); } catch (IOException e) { e.printStackTrace(); }finally { try { if(is!=null) is.close(); if(os!=null) os.close(); clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) { ServerSocket echoServer=null; Socket clientSocket=null; try { echoServer=new ServerSocket(8000); } catch (IOException e) { e.printStackTrace(); } while (true){ try { clientSocket=echoServer.accept(); System.out.println(clientSocket.getRemoteSocketAddress()+"connect"); tp.execute(new HandleMsg(clientSocket)); } catch (IOException e) { e.printStackTrace(); } } }}
客户端的实现
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetSocketAddress;import java.net.Socket;public class Client { public static void main(String[] args) throws IOException { Socket client=null; PrintWriter writer=null; BufferedReader reader=null; try{ client=new Socket(); client.connect(new InetSocketAddress("localhost",8000)); writer=new PrintWriter(client.getOutputStream(),true); writer.println("hello!"); writer.flush(); reader=new BufferedReader(new InputStreamReader(client.getInputStream())); System.out.println("from server:"+reader.readLine()); } catch (IOException e) { e.printStackTrace(); } finally { if(writer!=null) writer.close(); if(reader!=null) reader.close(); if(client!=null) client.close(); } }}
简单描述实现的功能服务端接收客户端的发送过来的数据,并打印客户端发送过来的数据
阅读全文
0 0
- 基于Socket的服务端的多线程模式编程案列
- 基于Socket的多线程和异步非阻塞模式编程
- 基于Socket的多线程和异步非阻塞模式编程
- 基于Socket的多线程和异步非阻塞模式编程
- 如何创建基于socket多线程的客户端和服务端
- socket编程基于UDP的服务端客户端回声程序
- socket 网络编程快速入门(二)教你编写基于UDP/TCP的服务端多线程通信
- Socket(二)尝试多线程的服务端
- 多线程的socket编程
- socket多线程的编程
- 多线程的 socket 编程
- 基于UDP的socket 客户端和服务端
- 基于Socket简单的客户端-服务端例子
- 基于socket的多线程(阻塞模式)聊天室
- Java基于Socket的简单多线程服务模式
- 基于Socket和多线程编程的聊天程序实现
- 东软学习,基于socket的多线程编程
- 编程实现基于UDP的多线程多客户端socket应用
- 解决mac升级后出现的 xcrun: error: invalid active developer path, missing xcrun 错误
- Redis的持久化——RDB
- 数据结构实验之栈与队列八:栈的基本操作
- 无人驾驶汽车系统入门(一)——卡尔曼滤波与目标追踪
- 160
- 基于Socket的服务端的多线程模式编程案列
- 2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言
- 破解的一款抓包工具,debug proxy,教你怎么修改so
- Ubuntu 14.05上编译KODI 17.4
- Android双进程保护实现的思考及过程说明
- WM_SetCursor中 RECT问题
- Android开发入门经典实例
- [算法笔记]——位运算平方根
- SSM综合项目实战(TTSC) -- day03 Nginx,类目选择,新增商品