您好,登錄后才能下訂單哦!
學(xué)了個(gè)把月基礎(chǔ),終于寫出了一個(gè)雙工通信的控制臺(tái)版本的聊天室了,廢話不說(shuō)啦,直接上代碼:
服務(wù)端代碼
package com.zijiemaedu.socketdemo;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
* @author: Mr-zhang
* @create: 2019-05-30 09:48
* @emall: 2680775774@qq.com
* @program: thread-demo
* @ClassName: Server
* @purpose:
*/
public class Server {
public final static int PORT = 8888; // 服務(wù)端監(jiān)聽(tīng)端口
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(PORT); // 服務(wù)端對(duì)象
Socket socket = server.accept(); // 等待客戶端鏈接(導(dǎo)致程序阻塞)
InputStream inputStream = socket.getInputStream();// 獲取客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)流
OutputStream outputStream = socket.getOutputStream();// 獲取客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)流
// 將流進(jìn)行轉(zhuǎn)換
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
// 向客戶端輸出消息
new Thread(new Runnable() {
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入您想發(fā)送給客戶端的消息:");
String line = scanner.next();
while (line != null) {
try {
writer.write(line);
writer.newLine();
writer.flush();
System.out.println("請(qǐng)輸入您想發(fā)送給客戶端的消息:");
line = scanner.next();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
socket.close();
server.close();
}
}
客戶端代碼:
package com.zijiemaedu.socketdemo;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
/**
* @author: Mr-zhangY
* @create: 2019-05-30 09:57
* @emall: 2680775774@qq.com
* @program: thread-demo
* @ClassName: Client
* @purpose:
*/
public class Client {
private final static String HOST = "localhost";
private final static int PORT = Server.PORT;
public static void main(String[] args) throws IOException {
Socket socket = new Socket(HOST, PORT); // 創(chuàng)建客戶端socket
OutputStream output = socket.getOutputStream();
InputStream inputStream = socket.getInputStream(); // 獲取服務(wù)端輸入過(guò)來(lái)的消息流
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
new Thread(() -> {
try {
while (true) {
String message = reader.readLine();
System.out.println("服務(wù)端響應(yīng)了: " + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
while (input != null) {
if ("q".equals(input)) {
break;
}
writer.write(input);
writer.newLine();
writer.flush();
input = scanner.next();
}
writer.close();
socket.close();
}
}
有需要交流軟件開(kāi)發(fā)的同學(xué)可以加我qq哦,2680775774
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。