Java Socket实现1V1简单通信(通过Dos命令窗口实现)
2015-11-14 21:43
465 查看
服务端代码:两个简单线程ServerRece和ServerSend分别接收和发送消息
客户端代码:两个简单线程ClientRece、ClientSend负责收发服务端传来的消息。可重复键盘输入~~
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class CoolServer { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(23456); Socket s = ss.accept(); System.out.println("Conneted--"); new Thread(new ServerRece(s)).start(); new Thread(new ServerSend(s)).start(); }catch(Exception e){ e.printStackTrace(); } } } class ServerRece implements Runnable{ private Socket socket; private BufferedReader br = null; public ServerRece(Socket socket) { this.socket = socket; } @Override public void run() { try { br = new BufferedReader( new InputStreamReader( socket.getInputStream())); String line ; while ((line = br.readLine())!=null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } } class ServerSend implements Runnable{ private Socket socket; private BufferedReader br; private BufferedWriter bw; public ServerSend(Socket socket) { this.socket = socket; } @Override public void run() { try { br = new BufferedReader(new InputStreamReader(System.in)); bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line ; while ((line = br.readLine())!=null) { bw.write(line); bw.newLine(); bw.flush(); } } catch (IOException e) { e.printStackTrace(); } } }
客户端代码:两个简单线程ClientRece、ClientSend负责收发服务端传来的消息。可重复键盘输入~~
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class CoolClient { public static void main(String[] args) { try { Socket socket = new Socket("192.168.191.2", 23456); new Thread(new ClientSend(socket)).start(); new Thread(new ClientRece(socket)).start(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class ClientRece implements Runnable{ private Socket socket; private BufferedReader br; public ClientRece(Socket socket) { this.socket = socket; } @Override public void run() { try { br = new BufferedReader( new InputStreamReader( socket.getInputStream())); String line; while((line = br.readLine())!=null){ System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } } class ClientSend implements Runnable{ private Socket socket; private BufferedReader br; private BufferedWriter bw; public ClientSend(Socket socket) { this.socket = socket; } @Override public void run() { try { br = new BufferedReader( new InputStreamReader(System.in)); /*下面这行其实可以使用更方便的PringWriter代替BufferedWriter*/ bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line; while((line = br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); } } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- 10011---JavaWeb基础---JSP概述
- Java并发(多线程)
- Java入门(四)final关键字
- JAVA中JVM简单学习
- ubuntu中执行gradle提示JAVA_HOME错误
- SpringMVC返回json数据的配置方式
- java源码分析07-ArrayList
- JAVA基础——集合框架
- Struts2_include
- 锁优化-java
- eclipse开发安卓项目的一些小错误(1)
- 线程安全(java)
- Java 反射机制
- Java异常处理 编程 考试成绩 优良中差判断
- Java入门(二)类与继承
- Java 设计模式之单例模式详解
- Struts2系统学习(15)Struts2校验框架基本原理分析
- eclipse启动无响应,停留在Loading workbench状态
- java与线程
- Java异常处理 “受控(checked)”的异常