[Java教程]用socket模拟实现全双工通信

0 2017-04-04 00:00:14 //源码下载 http://download.csdn.net/detail/qq_24054661/9802994package com.tsocket.test;import java.io.*;import java.net.*;public class Client {public static void main(String[] args) throws UnknownHostException, IOException {Socket socket = new Socket("169.254.87.76",8888);new Thread(new Send(socket)).start();new Thread(new Receive(socket)).start();/*String info = "客户端要连接!";BufferedWriter br = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));br.write(info);br.newLine();br.flush();*/}}package com.tsocket.test;import java.io.*;import java.net.*;public class Server {public static void main(String[] args) throws IOException {ServerSocket server = new ServerSocket(8888);Socket socket = server.accept();new Thread(new Send(socket)).start();new Thread(new Receive(socket)).start();//new Server().start();/*Socket socket = server.accept();DataInputStream dis = new DataInputStream(socket.getInputStream());DataOutputStream dos = new DataOutputStream(socket.getOutputStream());while(true){String info = dis.readUTF();System.out.println("服务器-->"+info);dos.writeUTF("服务器:--->"+info);}*/}public void start() throws IOException{ServerSocket server = new ServerSocket(8888);while(true){Socket socket = server.accept();MyChannel channel = new MyChannel(socket);new Thread(channel).start();}}private class MyChannel implements Runnable{private BufferedReader br ;private DataInputStream dis;private DataOutputStream dos;private boolean isRunning = true;private String Msg = null;@Overridepublic void run() {while(isRunning){Receive();Send();}}private String getMsg(){try {return br.readLine();} catch (IOException e) {return null;}}public MyChannel (Socket socket){br = new BufferedReader(new InputStreamReader(System.in));try {dis = new DataInputStream(socket.getInputStream());dos = new DataOutputStream(socket.getOutputStream());} catch (IOException e) {CloseUtil.closeAll(dis,dos); isRunning = false;}}private String Receive(){try{Msg = dis.readUTF();}catch(Exception e){CloseUtil.closeAll(dis,dos);isRunning = false;}return Msg;}private void Send(){String Msg=null;try {Msg = br.readLine();} catch (IOException e1) {//e1.printStackTrace();}if(Msg==null||Msg.equals("")){return;}try{dos.writeUTF(Msg);dos.flush();}catch(Exception e){CloseUtil.closeAll(dis,dos);isRunning = false;}}}}

package com.tsocket.test;import java.io.*;import java.net.*;public class Receive implements Runnable {private boolean isRunning = true;private DataInputStream dis;public Receive(Socket s){try {dis = new DataInputStream(s.getInputStream());} catch (IOException e) {isRunning = false;CloseUtil.closeAll(dis);}}public String receive(){String Msg="";try {Msg=dis.readUTF();} catch (IOException e) {isRunning = false;CloseUtil.closeAll(dis);}return Msg;}@Overridepublic void run() {while(isRunning){System.out.println(receive());}}}

package com.tsocket.test;import java.io.Closeable;public class CloseUtil {public static void closeAll(Closeable...io){for(Closeable temp :io){try{if(null!=temp){temp.close();}}catch(Exception e){e.printStackTrace();}}}}

package com.tsocket.test;import java.io.*;import java.net.*;public class Send implements Runnable {private BufferedReader br ;private DataOutputStream dos;private boolean isRunning = true;public Send(Socket socket){br = new BufferedReader(new InputStreamReader(System.in));try {dos = new DataOutputStream(socket.getOutputStream());} catch (IOException e) {isRunning = false;CloseUtil.closeAll(dos,br);}}private String getMsg(){try {return br.readLine();} catch (IOException e) {return null;}}public void send(){String Msg = getMsg();if(Msg!=null&&!Msg.equals("")){try {dos.writeUTF(Msg);dos.flush();} catch (IOException e) {isRunning = false;CloseUtil.closeAll(dos,br);}}}@Overridepublic void run() {while(isRunning){send();}}}

本文网址:http://www.shaoqun.com/a/305592.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

socket

0

java socket 全双工客户端_[Java教程]用socket模拟实现全双工通信相关推荐

  1. java 内存泄露 书籍_[Java教程]一次艰难的内存泄露排查,BeanUtils 的锅

    [Java教程]一次艰难的内存泄露排查,BeanUtils 的锅 0 2020-10-29 18:24:42 现象 通过jstat -gcutil pid 5000 ,发现fgc次数很多而且频繁,此时 ...

  2. java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...

    根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象 2012-05-29 0 1.字符串生成公钥对象 PublicKey /** * 实例化公钥 * * @re ...

  3. java 基础面试 英文_[Java面试] 面试java基础总结大全

    原标题:[Java面试] 面试java基础总结大全 基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. ...

  4. java 字符串格式替换_[Java] - 格式字符串替换方法

    Java 字符串格式替换方法有两种,一种是使用String.format(...),另一种是使用MessageFormat.format(...) 如下: import java.text.Messa ...

  5. java得到相对路径_[Java]JAVA获取相对路径问题的解决

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:xyz est.txt 代表了test.txt文件的绝对路径.http://www. ...

  6. java视、频_[java视频]感人故 事视 频网 站上那找~~~

    感人故 事视 频网 站上那找~~~ 问题补充:感人故 事视 频网 站上那找~~~ ●呵呵,你问对人了,感人故事就去"新浪show",现在是新浪期下的网站,运行稳定,观看流畅,上传简 ...

  7. java 历遍 类_[Java] 遍历指定包名下所有的类(支持jar) | 学步园

    项目需要,仅做记录. 支持包名下的子包名遍历,并使用Annotation(内注)来过滤一些不必要的内部类,提高命中精度. 通过Thread.currentThread().getContextClas ...

  8. java 图片宽高_[Java]获取图片高和宽

    通过javax.imageio.ImageIO类中的read()函数读取的图片,存放在类java.awt.image.BufferedImage类中.调用BufferedImage类中的getWidt ...

  9. java实现计算器框架_[Java小程序] 实现简单计算器

    这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练.感觉写完后不是很好,如果路过的哪位高手给点建议,小弟万分感激啊. 由于期末来了,没太多时间, ...

最新文章

  1. Android 按压效果的工具类
  2. 疯狂java讲义之流程控制与数组
  3. 【Python-ML】SKlearn库多项式回归
  4. Spring MVC入门示例教程--表单处理
  5. !DOCTYPE html
  6. [安全攻防进阶篇] 九.熊猫烧香病毒机理IDA和OD逆向分析(上)
  7. 5.5 设置UITableView单元格背景色 [原创iOS开发-Xcode教程]
  8. Oracle基本认识
  9. 推特CEO继任者曝光:带着老婆孩子睡公司,钢铁侠20年嫡系,现在掌舵挖洞公司...
  10. 【无标题】vue 简单增删改查表格
  11. Java笔记(2)--java基础语法
  12. tif批量转png格式 python
  13. 说一下zoom:1的原理,万一被问到呢?
  14. 51nod 1693 水群(思维,最短路,spfa)
  15. 谁有全民一起mysql_我是Redis,MySQL大哥被我害惨了!
  16. 2022-2028年中国健康险行业市场发展现状及竞争格局预测报告
  17. 线性代数-矩阵及其运算(总结)
  18. 【记录】mac使用PyCharm中Python版本不对应的解决方法
  19. [猿来小课]Python开发入门第三讲:Python的安装
  20. Photoshop制作木板雕刻看图识字

热门文章

  1. 蓝凌夺得2017移动办公年度产品和厂商双项大奖
  2. 扇区搜索机制的果蝇优化算法-附代码
  3. 【转帖】ActiveX部件不能创建对象的终极解决方案
  4. 瑞士巴塞尔大学授予以太坊联合创始人Vitalik Buterin荣誉博士学位
  5. 玩转电脑|2种解决电脑保存文件找不到桌面存储路径问题方法
  6. 身份证复印件签注很重要
  7. Windows(Wox) 办公提效工具
  8. QQ2013登录界面动画变成静态图片的解决方法
  9. 树形结构递归查询,删除等封装处理
  10. 1-2023年浙大MBA提面优秀资格获取心得