`

JKD1.5的多线程启动socket实例

    博客分类:
  • java
阅读更多
import java.io.*;
import java.net.*;
import java.util.concurrent.*;
public class MainServer {
private final ServerSocket serverSocket;
private final ExecutorService pool;
    public MainServer(int port, int clientCount) throws IOException {
      serverSocket = new ServerSocket(port);
      pool = Executors.newFixedThreadPool(clientCount);
    }

    public void serve() {
      try {
        while (true) {
          pool.execute(new Handler(serverSocket.accept()));
        }
      } catch (IOException ex) {
        pool.shutdown();
      }
    }

  class Handler implements Runnable {
    private final Socket socket;
    Handler(Socket socket) {
      this.socket = socket;
    }
    public void run() {
      // read and service request
      BufferedReader in=null;
      PrintWriter out=null;
      try
      {
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
        while(true)
        {
          String str=in.readLine();
          if(!str.equals(null))
          System.out.println(str);
        Thread.currentThread().sleep(2000);
        }
      }catch(Exception e)
      {
        System.out.println(e.toString());
      }
    }
  }

  public static void main(String aa[])
  {
      try
      {
          new MainServer(444, 65535).serve();
      }catch(Exception e)
      {
          System.out.println(e.toString());
      }
      }
  }

 

Client端:

package test.bwl;  
  
import java.io.DataInputStream;  
import java.io.DataOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.net.Socket;  
import java.net.UnknownHostException;  
  
public class SocketClient {  
  
    public static void main(String[] args) {  
        Socket socket = null;  
        try {  
            socket = new Socket("127.0.0.1", 9991);  
            //向服务器端第一次发送字符串     
            OutputStream netOut = socket.getOutputStream();  
            DataOutputStream doc = new DataOutputStream(netOut);  
            DataInputStream in = new DataInputStream(socket.getInputStream());  
            //向服务器端第二次发送字符串     
            doc.writeUTF("list");  
            String res = in.readUTF();  
            System.out.println(res);  
            doc.writeUTF("bye");  
            res = in.readUTF();  
            System.out.println(res);  
            doc.close();  
            in.close();  
        } catch (UnknownHostException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (socket != null) {  
                try {  
                    socket.close();  
                } catch (IOException e) {  
                }  
            }  
        }  
    }  
}  

 

分享到:
评论

相关推荐

    jkd1_5~1_7之新特性总结 - QQ350884961的专栏 - 博客频道 - CSDN_NET

    jkd1_5~1_7之新特性总结 - QQ350884961的专栏 - 博客频道 - CSDN_NET

    JDK 1.5 for Windows

    11. **内存模型的增强**:JDK 1.5对Java内存模型(JMM)进行了改进,确保了多线程环境下的正确性,例如volatile关键字的增强。 **安装JDK 1.5 for Windows**: 1. 下载`jdk-1_5_0_21-windows-i586-p.exe`安装文件...

    【多线程高并发编程】四 java(jdk1.8)五种线程池,你都知道具体的应用场景吗?

    Java从JDK 1.5版本开始引入了线程池,使得开发者不再需要手动创建和销毁线程,而是通过线程池来管理和复用线程。 1. **什么是线程池?** 线程池是预先创建并维护的一组线程集合。这些线程在需要时被分配给任务执行...

    安装文档步骤JKD1.7 - MQ -Jetty

    若需配置多实例,可以在Jetty的`start.d`目录下创建新的配置文件,如`jetty-instance1.ini`,并在其中指定不同的端口和上下文路径。启动时,通过`bin/jetty.sh instance=jetty-instance1`(Linux/Mac)或`bin/jetty....

    jkd7,8,10,

    【标题】"jkd7,8,10" 指的是Java开发工具包(Java Development Kit)的三个主要版本:JDK 7、JDK 8和JDK 10。这些版本在Java编程领域中具有重要意义,因为它们包含了运行和开发Java应用程序所需的所有组件,包括Java...

    jkd+tomcat安装环境配置

    它与 `CATALINA_HOME` 类似,但通常用于指定单个 Tomcat 实例的根目录,特别是在同一台机器上安装了多个 Tomcat 实例的情况下。 - **CATALINA_HOME**: - 变量名:CATALINA_HOME - 变量值:C:\ProgramFiles\...

    百度云 Linux jkd1.7多版本下载

    到处找jdk的资源,发现官方网站要注册登录,即使注册了也无法登录下载,无奈自己下载了可以资源,分享出来,下载速度很快,百度云 Linux jkd1.7多版本下载,

    JDK1.5_Linux_64bit_rpm(2-1)

    JDK1.5_u22_linux_64bit_rpm 该资源分两部分,下载到同一目录解压后,为"jdk-1_5_0_22-linux-amd64-rpm.bin" 使用方法: 1.使用二进制方式上传到安装环境 2.使用"chmod +x jdk-1_5_0_22-linux-amd64-rpm.bin"赋权限,...

    jkd1.8中文文档。

    通过Lambda,开发者可以以更少的代码实现多线程、事件处理等功能,提高代码的可读性和可维护性。 2. **Stream API**:Stream API是Java集合框架的重大扩展,提供了对数据进行操作的新方式,如过滤、映射、聚合等。...

    jkd7.tgz liunx 64

    【标题】"jkd7.tgz" 是一个针对Linux 64位操作系统的Java Development Kit (JDK) 7版本的压缩包文件。这个文件名表明它包含了在Linux 64位环境下运行和开发Java应用程序所需的核心组件。 【描述】中提到的"liunx-64...

    jkd 8 64位

    - **改进的类型推断**:编译器能够更好地推断泛型类型的实例化,减少了冗余的类型声明。 **2. JDK 8的安装与配置** - 下载:可以从Oracle官网下载JDK 8的64位版本,如"第8版本sdk.exe"。 - 安装:执行下载的安装...

    jkd1.6中文API

    满足大家的需求,我在网到了 中文版的java 1.6 API

    jkd环境变量设置

    ### JDK环境变量设置详解 #### 一、引言 对于Java初学者而言,正确地配置JDK环境变量是学习过程中非常关键的一步。本文将详细阐述如何在Windows 7操作系统上进行JDK环境变量的设置,并确保后续可以顺利运行Java...

    jkd1.6中文api

    4. 多线程:Java内置了强大的多线程支持,允许开发者创建并发执行的任务,提高程序效率。 5. 核心API:如Math类提供了各种数学运算,Date和Calendar类用于日期和时间操作,String和StringBuilder类用于字符串处理。...

    jkd_1.8_中文API_帮助文档_必应翻译版

    jkd 1.8 中文 帮助文档 必应翻译 开发必备神器 (注意: 首次打开文档前,务必按如下操作进行设置: 1-右键文档, 2-点击'属性' ,3-在属性栏中点击'解除锁定',4- 确定 ) 非常好用,建议配合英文原版进行查看,效果更佳.

    JKD1.6 64位 32位 jdk6

    标题中的"JKD1.6 64位 32位 jdk6"表明这是一份包含JDK1.6的64位和32位版本的下载包。64位和32位指的是JDK与操作系统平台的兼容性。64位JDK在处理大量数据和内存密集型应用时表现出更好的性能,因为它可以利用更大...

    jkd1.8-32.rar

    Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等

    JKD搏击风格_搏击.docx

    1. **立体攻击**:JKD强调全方位、多角度的攻击策略,不仅使用拳击中的各种拳法,还充分利用肘、膝和腿脚进行攻击。短程武器如肘膝力量大、速度快、动作狠,适合近战;长程武器如拳腿则能在中远距离发挥威力。攻击...

    java jkd 1.8.0

    Java JDK 1.8.0引入了多个关键特性,其中最引人注目的便是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许开发者以简洁的方式定义匿名函数,使得代码更加紧凑、可读性更强。Lambda表达式在处理集合数据时...

Global site tag (gtag.js) - Google Analytics