java socket 全双工客户端_[Java教程]用socket模拟实现全双工通信
[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模拟实现全双工通信相关推荐
- java 内存泄露 书籍_[Java教程]一次艰难的内存泄露排查,BeanUtils 的锅
[Java教程]一次艰难的内存泄露排查,BeanUtils 的锅 0 2020-10-29 18:24:42 现象 通过jstat -gcutil pid 5000 ,发现fgc次数很多而且频繁,此时 ...
- java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...
根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象 2012-05-29 0 1.字符串生成公钥对象 PublicKey /** * 实例化公钥 * * @re ...
- java 基础面试 英文_[Java面试] 面试java基础总结大全
原标题:[Java面试] 面试java基础总结大全 基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. ...
- java 字符串格式替换_[Java] - 格式字符串替换方法
Java 字符串格式替换方法有两种,一种是使用String.format(...),另一种是使用MessageFormat.format(...) 如下: import java.text.Messa ...
- java得到相对路径_[Java]JAVA获取相对路径问题的解决
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:xyz est.txt 代表了test.txt文件的绝对路径.http://www. ...
- java视、频_[java视频]感人故 事视 频网 站上那找~~~
感人故 事视 频网 站上那找~~~ 问题补充:感人故 事视 频网 站上那找~~~ ●呵呵,你问对人了,感人故事就去"新浪show",现在是新浪期下的网站,运行稳定,观看流畅,上传简 ...
- java 历遍 类_[Java] 遍历指定包名下所有的类(支持jar) | 学步园
项目需要,仅做记录. 支持包名下的子包名遍历,并使用Annotation(内注)来过滤一些不必要的内部类,提高命中精度. 通过Thread.currentThread().getContextClas ...
- java 图片宽高_[Java]获取图片高和宽
通过javax.imageio.ImageIO类中的read()函数读取的图片,存放在类java.awt.image.BufferedImage类中.调用BufferedImage类中的getWidt ...
- java实现计算器框架_[Java小程序] 实现简单计算器
这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练.感觉写完后不是很好,如果路过的哪位高手给点建议,小弟万分感激啊. 由于期末来了,没太多时间, ...
最新文章
- Android 按压效果的工具类
- 疯狂java讲义之流程控制与数组
- 【Python-ML】SKlearn库多项式回归
- Spring MVC入门示例教程--表单处理
- !DOCTYPE html
- [安全攻防进阶篇] 九.熊猫烧香病毒机理IDA和OD逆向分析(上)
- 5.5 设置UITableView单元格背景色 [原创iOS开发-Xcode教程]
- Oracle基本认识
- 推特CEO继任者曝光:带着老婆孩子睡公司,钢铁侠20年嫡系,现在掌舵挖洞公司...
- 【无标题】vue 简单增删改查表格
- Java笔记(2)--java基础语法
- tif批量转png格式 python
- 说一下zoom:1的原理,万一被问到呢?
- 51nod 1693 水群(思维,最短路,spfa)
- 谁有全民一起mysql_我是Redis,MySQL大哥被我害惨了!
- 2022-2028年中国健康险行业市场发展现状及竞争格局预测报告
- 线性代数-矩阵及其运算(总结)
- 【记录】mac使用PyCharm中Python版本不对应的解决方法
- [猿来小课]Python开发入门第三讲:Python的安装
- Photoshop制作木板雕刻看图识字