多线程之简单TCP应用未完待续........
2019-04-02 11:53
323 查看
多线程之简单TCP应用
[code]/* 使用TCP协议发送数据 创建发送端Socket对象(创建连接) 获取输出流对象 发送数据 释放资源 */ public class ClientDemo { public static void main(String[] args) throws IOException { System.out.println("Client"); //创建发送端Socket对象(创建连接) Socket s = new Socket(InetAddress.getByName("127.0.0.1"),10086); //创建线程对象 ClientThreadSend sent = new ClientThreadSend(s); ClientThreadReceive receive = new ClientThreadReceive(s); Thread t1 = new Thread(sent,"ClientSent"); Thread t2 = new Thread(receive,"ClientReceive"); //启动线程 t1.start(); t2.start(); } }
[code]/* 使用TCP协议接收数据 创建接收端Socket对象 监听(阻塞) 获取输入流对象 获取数据 输出数据 释放资源 */ public class ServerDemo { public static void main(String[] args) throws IOException { System.out.println("Server"); //创建接收端Socket对象 ServerSocket ss = new ServerSocket(10086); ////监听(阻塞) Socket s = ss.accept(); //创建线程对象 ServerThreadSend sent = new ServerThreadSend(ss, s); ServerThreadReceive receive = new ServerThreadReceive(ss, s); Thread t1 = new Thread(sent,"ServerSent"); Thread t2 = new Thread(receive,"ServerReceive"); //启动线程 t1.start(); t2.start(); } }
[code]public class ClientThreadSend implements Runnable { Socket s; public ClientThreadSend(Socket s){ this.s = s; } @Override public void run() { while (true) { try { send(s); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public synchronized void send(Socket s) throws IOException{ //获取输出流对象 OutputStream os = s.getOutputStream(); //定义数据源 // System.out.print("client:"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; line = br.readLine(); //发送数据 os.write(line.getBytes()); } }
[code]public class ClientThreadReceive implements Runnable { Socket s; public ClientThreadReceive(Socket s){ this.s = s; } @Override public void run() { while (true) { try { receive(s); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public synchronized void receive(Socket s) throws IOException{ //获取输入流对象 InputStream is = s.getInputStream(); byte[] bys = new byte[1024]; int len;//用于存储读取到的字节个数 //接收数据 len = is.read(bys); //输出数据 System.out.print("server say:"); System.out.println(new String(bys,0,len)); } }
[code]public class ServerThreadReceive implements Runnable { private ServerSocket ss; private Socket s; public ServerThreadReceive(ServerSocket ss,Socket s){ this.ss = ss; this.s = s; } @Override public void run(){ while (true) { try { receive(s); } catch (IOException e) { e.printStackTrace(); } } } public synchronized void receive(Socket s) throws IOException{ //获取输入流对象 InputStream is = s.getInputStream(); //获取数据 byte[] bys = new byte[1024]; int len;//用于存储读取到的字节个数 len = is.read(bys); String str = new String(bys,0,len); System.out.print("client say:"); //输出数据 System.out.println(str); } }
[code]public class ServerThreadSend implements Runnable { private ServerSocket ss; private Socket s; public ServerThreadSend(ServerSocket ss,Socket s){ this.ss = ss; this.s = s; } @Override public void run(){ while (true) { try { send(s); } catch (IOException e) { e.printStackTrace(); } } } public synchronized void send(Socket s) throws IOException{ //获取输出流对象 OutputStream os = s.getOutputStream(); //定义数据源 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; line = br.readLine(); //发送数据 os.write(line.getBytes()); } }
相关文章推荐
- 多线程的简单应用
- 简单的多线程的TCP服务器代码
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- 简单的易语言多线程应用实例
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
- delphi中多线程的简单应用
- JAVA---多线程之Callable与Future,FutureTask,及其简单应用
- 多线程简单应用示例
- SOCKET TCP的简单应用
- 注解Annotation简介,及注解简单应用,数组类型的属性,未完待续---枚举类型的属性,注解类型的属性
- android多线程与界面交互以及runOnUiThread简单应用
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
- win下多线程,同步等简单应用
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍(转)
- Java网络编程(tcp在服务器上应用多线程)
- 基于Python多线程的TCP客户端/服务端应用示例
- java2--TCP最简单的应用【例】
- pthread和semaphore的简单应用以及四个典型的多线程问题
- C#TCPClient应用-一个简单的消息发送和接收