java socket多线程通讯demo
来源:互联网 发布:青岛房价知乎 编辑:程序博客网 时间:2024/04/29 07:55
package com.yws.echo_socket;import java.io.*;import java.net.Inet4Address;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class EchoServer { private static ExecutorService executorService = Executors.newFixedThreadPool(5); public EchoServer(int port) throws IOException { ServerSocket serverSocket = new ServerSocket(port); String address = Inet4Address.getLocalHost().getHostAddress(); System.out.println("starting echo server on " + address + ":" + port); while (true) { Socket socket = serverSocket.accept(); executorService.execute(new Runnable() { @Override public void run() { try { doaccept(socket); } catch (IOException e) { e.printStackTrace(); } } }); } } private void doaccept(Socket socket) throws IOException { System.err.println(Thread.currentThread().getName() + " accept connection from client"); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); String line; int len; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) != -1) { byte[] data = new byte[len]; System.arraycopy(buffer, 0, data, 0, len); System.out.print(new String(data, 0, len)); out.write(buffer, 0, len); out.flush(); } /* BufferedReader is = new BufferedReader(new InputStreamReader(in)); BufferedWriter os = new BufferedWriter(new OutputStreamWriter(out)); while ((line = is.readLine()) != null) { os.write("来自server" + line); os.flush(); System.out.println("来自server" + line); } os.close(); is.close(); */ System.err.println(Thread.currentThread().getName() + " closing connection with client"); in.close(); out.close(); socket.close(); } public static void main(String[] args) throws IOException { int port = 4444; if (args.length == 2) { port = Integer.parseInt(args[1]); } new EchoServer(port); }}
package com.yws.echo_socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class EchoClient { private static boolean isacceptData=true; private static ExecutorService executorService= Executors.newFixedThreadPool(2); public EchoClient(String ip,int port) { try { Socket socket = new Socket(ip, port); System.out.println(ip+":"+port); sendData(socket); } catch (Exception e) { e.printStackTrace(); } } //ssh -L 192.168.0.102:9999:192.168.1.140:4444 localhost public static void main(String args[]) { int port=9999; String ip="192.168.0.102"; if(args.length==3) { ip=args[1]; port=Integer.parseInt(args[2]); } new EchoClient(ip,port); } public void sendData(Socket socket) throws InterruptedException, IOException { executorService.execute(new Runnable() { @Override public void run() { try { for(int i=1;i<=15;i++) { writedata(socket, "data"+i); } isacceptData=false; } catch (IOException e) { e.printStackTrace(); } } }); executorService.execute(new Runnable() { @Override public void run() { try { readdata(socket); } catch (IOException e) { e.printStackTrace(); } } }); // executorService.awaitTermination(2, TimeUnit.SECONDS); // System.out.println(Thread.activeCount()); // socket.close(); //executorService.shutdown(); } private void writedata(Socket socket, String data) throws IOException { PrintWriter os = new PrintWriter(socket.getOutputStream()); os.println(data); os.flush(); System.out.println(Thread.currentThread().getName()+" write:" + data); data="数据"; os.println(data); os.flush(); System.out.println(Thread.currentThread().getName()+" write:" + data); } private void readdata(Socket socket) throws IOException { BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while((line=is.readLine())!=null && isacceptData) { System.out.println(Thread.currentThread().getName()+" read from Server:" + line); } socket.close(); executorService.shutdown(); }}
0 0
- java socket多线程通讯demo
- java socket多线程通讯
- Java Socket通讯小Demo升级版
- socket通讯官方demo
- python socket 多线程通讯
- 多线程Socket通讯复习
- Java Design Demo--多线程(二)线程间通讯
- java socket多线程通讯,解决read阻塞问题
- socket多线程并发异步通讯
- java socket 多线程的服务端与客户端的demo
- Java Socket编程 多线程server和client通信demo
- Java Socket通讯例子
- JAVA 与SOCKET通讯
- java socket 通讯
- Java Socket通讯例子
- Java Socket通讯
- java c++ socket通讯
- java Socket TCP通讯
- Linux学习笔记--7.vim查找替换
- Linux下安装使用mysql connector(C++)
- android中LayoutInflater.from(context).inflate的分析
- axis调用RMI模式WebService
- Eclipse不能设置断点的一种可能原因
- java socket多线程通讯demo
- 拖延症又来了了。。。
- Android ListView 设置选中item高亮状态
- ubuntu 下新建用户命令
- 配置python命令tab键自动补全
- js实时上传文件显示缩略图
- Android Studio 简单介绍和使用问题小结 -gradle
- Java Base —— IO
- OPENCV中SVM参数解析