Java Scoket实现双向通信(代码详解)
你好我是辰兮,很高兴你能来阅读,本篇总结了Java Scoket类的相关知识,并且整理了实现双向通信的相关代码也有案例实现截图,分享获取新知,大家一起进步。
JAVA基础面试常考问题: JAVA面试基础常考题汇集JAVA面试SSM框架常考:JAVA框架面试题汇集
文章目录
- 一、网络通信
- 二、接受者(Receiver)
- 三、发送者(Sender)
- 四、案例截图
一、网络通信
网络通信,在网络中程序(发送者)与程序(接受者)之间的数据交互。
通信要素①ip + 端口号 ②传输协议
java.net包: 包含了Java用于网络通信所需的类。
ServerSocket类,用于表示网络服务
创建网络服务(创建ServerSocket对象)
//构造器
public ServerSocket(int port)//创建网络服务
ServerSocket server = new ServerSocket(9999);
接收网络请求
//接收网络请求的方法
public Socket accept()//网络服务接收请求(阻塞)
Socket socket = server.accept();
Socket类,网络套接字,表示网络连接
发送网络请求
//构造器
public Socket(String ip, int port)
//获取网络连接中的输入流
public InputStream getInputStream()
//获取网络连接中的输出流
public OuputStream getOutputStream()
二、接受者(Receiver)
代码实现如下:信息的接受者
public class Receiver {public static void main(String[] args) {try {ServerSocket server = new ServerSocket(8888);Socket socket = server.accept();System.out.println("----程序已经连接++++");InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);PrintWriter pw = new PrintWriter(os);Runnable r1 = new Runnable() {@Overridepublic void run() {while (true) {// 接受信息String str;try {str = br.readLine();System.out.println("sender的信息" + str);} catch (IOException e) {e.printStackTrace();}}}};Runnable r2 = new Runnable() {@Overridepublic void run() {// 返回信息while (true) {Scanner scan = new Scanner(System.in);String msg = scan.nextLine();pw.println(msg);pw.flush();}}};Thread t1 = new Thread(r1);Thread t2 = new Thread(r2);t1.start();t2.start();} catch (IOException e) {e.printStackTrace();}}
}
三、发送者(Sender)
代码实现如下:信息的发送者
public class Sender {public static void main(String[] args) {try {Socket socket = new Socket("192.168.1.6", 8888);InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);PrintWriter pw = new PrintWriter(os);Runnable r = new Runnable() {@Overridepublic void run() {while (true) {// 发送信息try {Scanner scan = new Scanner(System.in);String msg = scan.nextLine();pw.println(msg);pw.flush();} catch (Exception e) {}}}};Runnable r2 = new Runnable() {@Overridepublic void run() {// 接受发送的信息while (true) {String str;try {str = br.readLine();System.out.println("接受者receiver:" + str);} catch (IOException e) {e.printStackTrace();}}}};Thread t1 = new Thread(r);Thread t2 = new Thread(r2);t1.start();t2.start();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
四、案例截图
首先看到开启Receiver,然后开启Sender
开启Sender后----看到Receiver控制台显示连接成功

Sender发送信息

Receiver接受到信息,然后回复

点开Sender控制台,看到回复的信息然后继续回复

双向沟通交流实现

The best investment is to invest in yourself

2020.06.22 记录辰兮的第86篇博客
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
