一、客户端

package net.socketTest;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class MultiThreadClient_jiaohu {public static void main(String[] args) throws InterruptedException {int numTasks = 2120;ExecutorService exec = Executors.newCachedThreadPool();for (int i = 0; i < numTasks; i++) {Thread.sleep(5L);exec.execute(createTask(i));}}// 定义一个简单的任务private static Runnable createTask(final int taskID) {return new Runnable() {private Socket socket = null;private int port=8821;public void run() {Socket clinet = null;int task_ID=taskID;try {clinet = new Socket("192.168.252.155",port);} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}Reader reader = null;try {reader = new InputStreamReader(clinet.getInputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}BufferedReader clinetin=new BufferedReader(reader);Writer writer = null;try {writer = new OutputStreamWriter(clinet.getOutputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}PrintWriter clientout=new PrintWriter(writer);int i=0;while(true){i++;try {int ran=new Random().nextInt(20*60)+1;Thread.sleep(ran*1000L);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}String str=" 线程编号:"+task_ID;clientout.println(str);clientout.flush();String newStr = null;try {newStr = clinetin.readLine();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("  --:"+newStr);if(i>=100000)break;}try {clinetin.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}clientout.close();System.out.println("  ===发送结束===");}};}
}

二、服务端

package net.socketTest;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.*;
import java.util.concurrent.*;public class SocketServer {private int port=8821;private ServerSocket serverSocket;private ExecutorService executorService;//线程池private final int POOL_SIZE=2200;//单个CPU线程池大小 也是最大连接数,否则超出此数量的连接数无法连上private int count=0;public SocketServer() throws IOException{serverSocket=new ServerSocket(port);//Runtime的availableProcessor()方法返回当前系统的CPU数目.executorService=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE);System.out.println("start Socket Server at port: "+port);}public void start(){while(true){Socket socket=null;try {//接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接socket=serverSocket.accept();count++;System.out.println("                                                          "+count);executorService.execute(new Handler(socket));} catch (Exception e) {e.printStackTrace();}}}public static void main(String[] args) throws IOException {new SocketServer().start();}}class Handler implements Runnable{private Socket socket;public Handler(Socket socket){this.socket=socket;}private PrintWriter getWriter(Socket socket) throws IOException{OutputStream socketOut=socket.getOutputStream();return new PrintWriter(socketOut,true);}private BufferedReader getReader(Socket socket) throws IOException{InputStream socketIn=socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void run(){try {System.out.println("New connection accepted "+socket.getInetAddress()+":"+socket.getPort());BufferedReader br=getReader(socket);PrintWriter pw=getWriter(socket);String msg=null;while((msg=br.readLine())!=null){//  System.out.println(msg);pw.println(msg);}} catch (IOException e) {e.printStackTrace();}finally{try {if(socket!=null)socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

java Socket 编程实例相关推荐

  1. tcp java实例_实现了基于TCP的Java Socket编程实例代码

    实现了基于TCP的Java Socket编程,功能很简单:客户端向服务器端输出一名话"connect",服务器端接收输出到控制台并向客户端输出一名话"Hello" ...

  2. JAVA socket编程实例 转载

    事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Socket ...

  3. JAVA socket编程实例

    2019独角兽企业重金招聘Python工程师标准>>> 事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的 ...

  4. java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码

    通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...

  5. java socket编程心跳_Java Socket编程心跳包创建实例解析

    1.什么是心跳包? 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包. 用来判断对方(设备,进程或其它网元)是否正常运行,采用 ...

  6. Java Socket编程如何建立两者关系

    转自:http://developer.51cto.com/art/201003/190582.htm Java Socket编程需要大家详细的学习,有关的技术一直在不断的更新.那么要如何才能掌握好有 ...

  7. JAVA socket编程 Datagram套接字 UDP协议(转)

      查看文章     JAVA socket编程 Datagram套接字 UDP协议 2009-05-13 09:35 1 UDP套接字 数据报(Datagram)是网络层数据单元在介质上传输信息的一 ...

  8. Java Socket编程----通信是这样炼成的

    转载自 Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socke ...

  9. Socket编程实例

    2019独角兽企业重金招聘Python工程师标准>>> Java具有非常强大的网络应用开发能力.学习网络编程,估计都是从编写一个socket通信开始,从中慢慢掌握网络编程的一点点知识 ...

  10. Java Socket编程详解

    Java Socket编程是Java网络编程很重要的内容,现参考了许多资料,总结如下: 1. Java网络编程原理+Socket编程 http://www.cnblogs.com/linzheng/a ...

最新文章

  1. [Spring5]IOC容器_Bean管理XML方式_注入集合类型属性
  2. WinPcap笔记(9):保存数据包到堆文件
  3. Struts2的手工自定义验证--完整实例代码
  4. 影视双端app源码对接苹果CMS 带商城系统投屏选集直播盒子码支付
  5. Microsoft Deployment Toolkit build 8456
  6. linux带参数post调用接口,CURL命令模拟Http Get/Post以及带cookies调用接口
  7. 由一维数组表示的N维数组实现(C++)
  8. 视频传输的方式有哪些?
  9. WEB安全 asp+access注入
  10. html网页怎么弄背景 图片,在html网页中如何设置背景图片?网页背景怎么设置?...
  11. 软件著作权申请流程和注意事项
  12. 魔兽世界私服架设 服务器架设简易教程
  13. linux ssh服务状态,查看linux ssh服务信息及运行状态方法
  14. 微信小程序_map组件实现定位
  15. 基于单片机的TLC稳压电源系统设计-基于单片机大脑运算能力智力测试仪-基于单片机超声波测距系统仿真设计(报告 PCB 原理图)-基于单片机超高精度电参数测试设计-基于单片机变电站变压器运行参数监测仿真
  16. oracle 10 卸载工具,完全卸载oracle10个(转)
  17. kdj指标主要看哪个值_KDJ指标怎么看?KDJ指标详解
  18. JSP中四种作用域的不同
  19. PHP快速入门-基础语法及面向对象
  20. 18、分类页面 - 小程序端开发 - 微擎小程序模块应用开发

热门文章

  1. 使用SubSonic生成数据访问层步骤
  2. ionic app 开发学习
  3. 基于springboot+mysql的房地产中介管理系统
  4. 【MySQL源码】01 MySQL源码总述
  5. MacOS使用技巧总结
  6. Tomcat乱码解决方法
  7. 工欲善其事必先利其器之学编程的电脑需要什么配置
  8. 史上最全!数学参考书大评测及常见问题
  9. 2#使用新安装的ubuntu,之vim必须知道的细节
  10. 《电力电子技术》王兆安 第二章