Java项目中的多线程通信如何利用Socket实现

发布时间:2020-11-24 16:44:40

来源:亿速云

阅读:96

作者:Leah

这期内容当中小编将会给大家带来有关Java项目中的多线程通信如何利用Socket实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Java 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项目中的多线程通信如何利用Socket实现了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

java通信项目_Java项目中的多线程通信如何利用Socket实现相关推荐

  1. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  2. java application 路径_java项目获取根路径(web项目和application项目的区分)

    Java项目中经常要读取配置文件,涉及到读取配置文件的地方,就会要读定位文件的路径.因此,在项目如何正确获取文件路径尤为关键. 根据不同的java项目,在获取文件路径时候有一些 小区别 测试环境:E: ...

  3. java dbhelper类_java项目使用的DBhelper类

    import java.io.*; import java.sql.*; import java.util.*; import javax.servlet.jsp.jstl.sql.*; public ...

  4. java实践项目_Java项目开发实践

    第章项目开发基础() 项目开发实训目标() 实训知识目标() 实训能力目标() 实训素质目标() 项目开发技术() 图形用户界面编程技术() 输入输出编程技术() 网络编程技术() 数据结构编程技术( ...

  5. java sslsocket程序_JAVA与C++进行sslsocket通信,JAVA做服务端或客户端

    前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖到现在才写这篇文章,不好意思哈. 本文测试环境: 系统:WINDOWS 7(第3.6步).OS X 10.9(第4步) 软 ...

  6. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  7. java的成员方法_java编程中的成员方法是什么?

    DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...

  8. JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...

    [填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...

  9. java swing背景_java Swing中添加背景图片(总结)

    在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...

最新文章

  1. cmd开无线服务器,使用cmd命令开启wifi
  2. curl 模拟 GET\POST 请求
  3. python图片-利用python进行识别相似图片(一)
  4. 【错误记录】Google Play 上架报错 ( APK 大小 | 目标 API 级别 | Google Play 帮助文档 )
  5. 混淆视听的感脚(二)
  6. Magento教程 22:如何确认订单报表?
  7. 翰文进度计划软件横道图不显示文字_作为工程新人总是加班?这份工程软件+算量套表直接帮助你,共享...
  8. paip.提升性能---jvm java 工具使用.
  9. 测试人员必会用例设计方法--正交表
  10. Abaqus2022安装教程
  11. 【3】Kali破解家用WI-FI密码 - 建立伪装热点
  12. STM32开发 -- Jlink常用命令
  13. 阿里云国际版控制台使用海外云服务器教程详解
  14. Sketch for Mac (矢量绘图软件) v81.1
  15. Windows/Linux下C++对于UUID的跨平台封装
  16. 对象、继承、封装、多态、抽象类的组合应用:编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个Employee对象的生日,则将在该雇员的工资上增加100元发给他。
  17. 数据库原理题型 - 选择题
  18. 中国移动、天猫都在用的区块链抽奖,了解一下?
  19. html5怎么有漂浮的效果,实现元素漂浮在水面特效的jQuery插件
  20. MySQL函数大全及用法示例

热门文章

  1. 小心!你家的 IoT 设备可能已成为僵尸网络“肉鸡”
  2. 上万条数据撕开微博热搜的真相!
  3. 要闻君说:facebook迎来“全球宕机”惊险时刻;吸引大牛!拼多多成立了技术委员会;胡晓明卸任庚接任,阿里云计算迎来法人变更...
  4. Storm精华问答 | 为什么这么多人用Spark而不用Storm?
  5. 15拆分成3个不同的自然数_17个数学重点知识点汇总,一篇搞定小升初
  6. redis rdb aof区别_Redis(三):持久化RDB,fork.copyonwrite,AOF,RDBamp;AOF混合使用
  7. mysql怎么跳出while循环_mysql while,loop,repeat循环,符合条件跳出循环
  8. pta段错误是什么意思_用Python执行Django数据迁移时报!(1091错误及解决方法)...
  9. python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!
  10. android air flash,在Adobe Flash上​​触摸滚动Android上的Air