java_Socket入门demo3
2016-02-19 00:00
323 查看
摘要: java_Socket入门demo3
//客户端eclipse
package com.socket.server; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @info java_socket入门Demo3 * @author kxw 客户端与服务器端通信 * @see 参考资料 wind圣骑士blog */ public class TcpSocketServer { public static void main(String[] args) { try { // 创建服务器端套接字 ServerSocket serverSocket = new ServerSocket(3000); // 做一个循环一直监听 while (true) { // 多客户端可做socket集合 noi的chanelSocket做的更好 Socket socket = serverSocket.accept(); // 创建读取的输入流线程 Thread serverInputThread = new Thread(new ServerInputRunnable(socket)); // 创建写入的输入流线程 Thread serverOutputThread = new Thread(new ServerOutputRunnable(socket)); // 启动线程 不停的读和写 serverInputThread.start(); serverOutputThread.start(); } } catch (Exception e) { e.printStackTrace(); } } }
package com.socket.server; import java.io.IOException; import java.io.InputStream; import java.net.Socket; /** * @author kxw * 服务器端___读取客户端数据的线程 */ public class ServerInputRunnable implements Runnable { private Socket socket; public ServerInputRunnable(Socket socket) { this.socket = socket; } @Override public void run() { try { // 获得输入流 InputStream is = socket.getInputStream(); while (true) { byte[] bytes = new byte[1024]; int length = is.read(bytes); System.out.println("客户端:"+new String(bytes,0,length)); } } catch (IOException e) { e.printStackTrace(); } } }
package com.socket.server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; /** * @author kxw * 服务器端____向客户端写入数据的线程 */ public class ServerOutputRunnable implements Runnable { private Socket socket; public ServerOutputRunnable(Socket socket) { super(); this.socket = socket; } @Override public void run() { try { OutputStream os = socket.getOutputStream(); while (true) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in,"UTF-8")); String line = reader.readLine(); os.write(line.getBytes()); } } catch (IOException e) { e.printStackTrace(); } } }
//客户端eclipse
package com.cnse.socket.client; import java.net.Socket; public class SocketClient { public static void main(String[] args) throws Exception { // 创建客户点socket对象 连接服务器端socket 端口一致 Socket socket = new Socket("127.0.0.1", 3000); // 创建客户端 独立的写的线程和读的线程 Thread ClientInputThread = new Thread(new ClientInputRunnable(socket)); Thread ClientOutputThread = new Thread(new ClientOutputRunnable(socket)); ClientInputThread.start(); ClientOutputThread.start(); } }
package com.cnse.socket.client; import java.io.IOException; import java.io.InputStream; import java.net.Socket; public class ClientInputRunnable implements Runnable { private Socket socket; public ClientInputRunnable(Socket socket) { super(); this.socket = socket; } @Override public void run() { try { // 获得输入流 InputStream is = socket.getInputStream(); while (true) { byte[] bytes = new byte[1024]; int length = is.read(bytes); System.out.println("服务器:"+new String(bytes,0,length)); } } catch (IOException e) { e.printStackTrace(); } } }
package com.cnse.socket.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; public class ClientOutputRunnable implements Runnable { private Socket socket; public ClientOutputRunnable(Socket socket) { super(); this.socket = socket; } @Override public void run() { try { OutputStream os = socket.getOutputStream(); while (true) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); String line = reader.readLine(); os.write(line.getBytes()); } } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- java基础之继承和多态概念
- SpringAnnotation注解之@Component,@Repository,@Service,@Controller
- SpringAnnotation注解之@Resource
- Spring整合Hibernate:1、annotation方式管理SessionFactory
- Java23种设计模式学习笔记【目录总贴】
- java websocket
- springmvc多文件上传
- 六种常用的设计模式java实现(六)策略模式
- Java设计模式之单例模式 double---checked----locking双重检查锁定
- 16-02-18 Java 方法应用 之 打印字母三角形
- 内省调用JavaBean实现getXxx和setXxx的两种方式
- 六种常用的设计模式java实现(五)代理模式
- 蓝桥杯 历届试题 错误票据 java详解
- [java]注解
- javaIO流
- 深入Java虚拟机(2)——Java的平台无关性
- 深入Java虚拟机(2)——Java的平台无关性
- 深入Java虚拟机(2)——Java的平台无关性
- 深入Java虚拟机(2)——Java的平台无关性
- java.lang.VerifyError