这里附上博主UDP版本的echo server 和 echo client
如何编写一个最简单的 udp 版本的 echo server 和 echo client(小白也懂!)_幻荼的博客-CSDN博客
目录
目的
编写一个TCP版本的echo server 和 echo client
发送消息,并原封不动返回消息
效果
关于服务端的代码解释
服务端代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
ServerSocket socket = null;
Server(int port) throws IOException {
socket = new ServerSocket(port);
}
public void start() throws IOException {
System.out.println("服务器启动!");
// while(true){
Socket receiveSocket = socket.accept();
connection(receiveSocket);
//}
}
public String process(String reveiveString){
return reveiveString;
}
public void connection(Socket clientSocket){
System.out.printf("[%s:%d] 客户端上线!\n", clientSocket.getInetAddress().toString(),
clientSocket.getPort());
try(InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream()){
PrintWriter response = new PrintWriter(outputStream);
Scanner scanner = new Scanner(inputStream);
while(true){
if(!scanner.hasNext()){
System.out.printf("[%s:%d] 客户端下线!\n", clientSocket.getInetAddress().toString(),
clientSocket.getPort());
break;
}
String receiveString = scanner.next();
String responseString = process(receiveString);
response.println(responseString);
response.flush();
System.out.printf("[%s:%d] req: %s; resp : %s\n",
clientSocket.getInetAddress().toString(), clientSocket.getPort(), receiveString, responseString);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) throws IOException {
Server server = new Server(9090);
server.start();
}
}
客户端
关于客户端代码解释
客户端代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client {
Socket socket = null;
Client(String ip,int port) throws IOException {
socket = new Socket(ip,port);
}
public void start(){
Scanner sc = new Scanner(System.in);
try(InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream()) {
Scanner scanner = new Scanner(inputStream);
PrintWriter printWriter = new PrintWriter(outputStream);
while(true){
System.out.println("请输入发送的消息");
String sendString =sc.next();
printWriter.println(sendString);
printWriter.flush();
String receiveString = scanner.next();
System.out.printf("req: %s; resp: %s\n", sendString, receiveString);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) throws IOException {
Client client = new Client("127.0.0.1",9090);
client.start();
}
}