Java Socket编程 消息接收和发送类

本文展示了Java中客户端和服务器端通过Socket进行通讯的基本流程,包括建立连接、读取与发送数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; //客户端 public class ReceiverThread_A extends Thread { private Socket socket; private BufferedReader br; private PrintStream ps; private String ReadLine = ""; public ReceiverThread_A() { try { socket = new Socket(InetAddress.getLocalHost(), 5698); br = new BufferedReader(new InputStreamReader( socket.getInputStream())); ps = new PrintStream(socket.getOutputStream()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public PrintStream getPrintStream() { return ps; } @Override public void run() { try { while ((ReadLine = br.readLine()) != null) { if (ReadLine == "END") { break; } System.out.println(ReadLine); } } catch (IOException e) { e.printStackTrace(); } } } import java.io.PrintStream; public class SenderThread_A extends Thread { private PrintStream ps; private String Message = ""; private boolean isRunning; public SenderThread_A(PrintStream ps) { this.ps = ps; isRunning = true; } public synchronized void sendMessage(String Message) { this.Message = Message; notify(); } public boolean isRunning() { return isRunning; } public void setRunning(boolean isRunning) { this.isRunning = isRunning; notify(); } @Override public synchronized void run() { while (isRunning) { if (Message == "") { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } if (Message == "") { break; } else { ps.println(Message); ps.flush(); } Message = ""; } } } 服务器端

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class ReceiverThread_B extends Thread { private ServerSocket serverSocket; private Socket socket; private BufferedReader br; private PrintStream ps; private String ReadLine = ""; public ReceiverThread_B() { try { serverSocket = new ServerSocket(5698); } catch (IOException e) { e.printStackTrace(); } } public PrintStream getPrintStream() { return ps; } @Override public void run() { try { socket = serverSocket.accept(); br = new BufferedReader(new InputStreamReader( socket.getInputStream())); ps = new PrintStream(socket.getOutputStream()); } catch (IOException e1) { e1.printStackTrace(); } try { while ((ReadLine = br.readLine()) != null) { if (ReadLine == "END") { break; } System.out.println(ReadLine); } } catch (IOException e) { e.printStackTrace(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值