Java Scoket实现双向通信(代码详解)
【摘要】
你好我是辰兮,很高兴你能来阅读,本篇总结了Java Scoket类的相关知识,并且整理了实现双向通信的相关代码也有案例实现截图,分享获取新知,大家一起进步。
JAVA基础面试常考问题 : JA...
你好我是辰兮,很高兴你能来阅读,本篇总结了Java Scoket类的相关知识,并且整理了实现双向通信的相关代码也有案例实现截图,分享获取新知,大家一起进步。
JAVA基础面试常考问题
: JAVA面试基础常考题汇集JAVA面试SSM框架常考
:JAVA框架面试题汇集
一、网络通信
网络通信,在网络中程序(发送者)与程序(接受者)之间的数据交互。
通信要素①ip + 端口号 ②传输协议
java.net包: 包含了Java用于网络通信所需的类。
ServerSocket类,用于表示网络服务
创建网络服务(创建ServerSocket对象)
//构造器
public ServerSocket(int port)
//创建网络服务
ServerSocket server = new ServerSocket(9999);
- 1
- 2
- 3
- 4
- 5
接收网络请求
//接收网络请求的方法
public Socket accept()
//网络服务接收请求(阻塞)
Socket socket = server.accept();
- 1
- 2
- 3
- 4
- 5
Socket类,网络套接字,表示网络连接
发送网络请求
//构造器
public Socket(String ip, int port)
//获取网络连接中的输入流
public InputStream getInputStream()
//获取网络连接中的输出流
public OuputStream getOutputStream()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
二、接受者(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() {
@Override
public void run() {
while (true) {
// 接受信息
String str;
try {
str = br.readLine();
System.out.println("sender的信息" + str);
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
Runnable r2 = new Runnable() {
@Override
public 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();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
三、发送者(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() {
@Override
public 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() {
@Override
public 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();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
四、案例截图
首先看到开启Receiver,然后开启Sender
开启Sender后----看到Receiver控制台显示连接成功
Sender发送信息
Receiver接受到信息,然后回复
点开Sender控制台,看到回复的信息然后继续回复
双向沟通交流实现
The best investment is to invest in yourself
2020.06.22 记录辰兮的第86篇博客
文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。
原文链接:blessing.blog.csdn.net/article/details/106907048
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)