你好我是辰兮,很高興你能來閱讀,本篇總結了Java Scoket類的相關知識,並且整理了實現雙向通信的相關代碼也有案例實現截圖,分享獲取新知,大家一起進步。
JAVA基礎面試常考問題
: JAVA面試基礎常考題彙集JAVA面試SSM框架常考
:JAVA框架面試題彙集
一、網絡通信
網絡通信,在網絡中程序(發送者)與程序(接受者)之間的數據交互。
通信要素①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() {
@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();
}
}
}
三、發送者(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();
}
}
}
四、案例截圖
首先看到開啓Receiver,然後開啓Sender
開啓Sender後----看到Receiver控制檯顯示連接成功
Sender發送信息
Receiver接受到信息,然後回覆
點開Sender控制檯,看到回覆的信息然後繼續回覆
雙向溝通交流實現
The best investment is to invest in yourself
2020.06.22 記錄辰兮的第86篇博客