全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java Socket实现多线程通信功能示例

本文实例讲述了Java Socket实现多线程通信功能的方法。分享给大家供大家参考,具体如下:

前面的文章《Java Socket实现单线程通信的方法示例》说到怎样写一个最简单的Java Socket通信,但是文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后续Client不能再继续连接,所以需要做些改动,当Server没接受到一个Client连接请求之后,都把处理流程放到一个独立的线程里去运行,然后等待下一个Client连接请求,这样就不会阻塞Server端接收请求了。每个独立运行的程序在使用完Socket对象之后要将其关闭。代码如下:

package com.googlecode.garbagecan.test.socket.sample2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
  public static void main(String[] args) throws IOException {
    ServerSocket server = new ServerSocket(10000);
    while (true) {
      Socket socket = server.accept();
      invoke(socket);
    }
  }
  private static void invoke(final Socket client) throws IOException {
    new Thread(new Runnable() {
      public void run() {
        BufferedReader in = null;
        PrintWriter out = null;
        try {
          in = new BufferedReader(new InputStreamReader(client.getInputStream()));
          out = new PrintWriter(client.getOutputStream());
          while (true) {
            String msg = in.readLine();
            System.out.println(msg);
            out.println("Server received " + msg);
            out.flush();
            if (msg.equals("bye")) {
              break;
            }
          }
        } catch(IOException ex) {
          ex.printStackTrace();
        } finally {
          try {
            in.close();
          } catch (Exception e) {}
          try {
            out.close();
          } catch (Exception e) {}
          try {
            client.close();
          } catch (Exception e) {}
        }
      }
    }).start();
  }
}

下面是Client程序代码:

package com.googlecode.garbagecan.test.socket.sample2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class MyClient {
  public static void main(String[] args) throws Exception {
    Socket socket = new Socket("localhost", 10000);
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter out = new PrintWriter(socket.getOutputStream());
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    while (true) {
      String msg = reader.readLine();
      out.println(msg);
      out.flush();
      if (msg.equals("bye")) {
        break;
      }
      System.out.println(in.readLine());
    }
    socket.close();
  }
}

测试,首先运行MyServer类,然后运行两个MyClient类,然后分别在每个MyClient的提示符下输入字符串,就可以看到Server可以分别接收处理每个Client的请求了。

更多关于java相关内容感兴趣的读者可查看本站专题:《Java Socket编程技巧总结》、《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


# Java  # Socket  # 多线程  # 通信  # Java多线程通信:交替打印ABAB实例  # Java多线程通信wait()和notify()代码实例  # Java多线程通信实现方式详解  # Java多线程深入理解  # Java多线程通信问题深入了解  # 操作技巧  # 相关内容  # 第一个  # 说到  # 感兴趣  # 数据结构  # 给大家  # 要将  # 里去  # 最简单  # 更多关于  # 能再  # 都把  # 所述  # 做些  # 程序设计  # 就可以  # 单线程  # 有一个 


相关文章: 建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  如何构建满足综合性能需求的优质建站方案?  建站之星logo尺寸如何设置最合适?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何在万网自助建站中设置域名及备案?  建站之星免费模板:自助建站系统与智能响应式一键生成  建站之星如何快速生成多端适配网站?  南京网站制作费用,南京远驱官方网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站主机解析:虚拟主机配置与服务器选择指南  建站VPS配置与SEO优化指南:关键词排名提升策略  网站制作软件免费下载安装,有哪些免费下载的软件网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  ,柠檬视频怎样兑换vip?  建站为何优先选择香港服务器?  网站按钮制作软件,如何实现网页中按钮的自动点击?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何零基础开发自助建站系统?完整教程解析  常州自助建站费用包含哪些项目?  无锡营销型网站制作公司,无锡网选车牌流程?  ppt制作免费网站有哪些,ppt模板免费下载网站?  如何用好域名打造高点击率的自主建站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何通过西部建站助手安装IIS服务器?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  如何快速搭建安全的FTP站点?  网站制作报价单模板图片,小松挖机官方网站报价?  高端建站三要素:定制模板、企业官网与响应式设计优化  建站之星如何助力网站排名飙升?揭秘高效技巧  如何快速生成凡客建站的专业级图册?    Java解压缩zip - 解压缩多个文件或文件夹实例  招贴海报怎么做,什么是海报招贴?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  宝塔面板如何快速创建新站点?  ,制作一个手机app网站要多少钱?  C#如何使用XPathNavigator高效查询XML  如何在Ubuntu系统下快速搭建WordPress个人网站?  建站之星上传入口如何快速找到?  如何通过NAT技术实现内网高效建站?  如何用PHP快速搭建CMS系统?  如何在IIS服务器上快速部署高效网站?  如何高效生成建站之星成品网站源码?  建站10G流量真的够用吗?如何应对访问高峰? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。