📄 echoserver.java
字号:
/*
C/S服务应用
程序功能:完成C/S结果的服务端响应.端口在8080
作用:单线程实现镜面反射服务端,即客户端输入什么,服务端接收并返回什么
原理:通过Java中的 java.net.Socket实例来对网络输入流响应,和返回.
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServer {
// Choose a port outside of the range 1-1024:
public static final int PORT = 8080; //端口号 定义成公共静态的,在外部不用产生实例也能引用
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(PORT); //建立ServerSocket实例完成服务端端口开启
System.out.println("Started: " + s);
try {
// Blocks until a connection occurs:
Socket socket = s.accept(); //通过accept()侦听服务端口,如果有则产生Socket实例.
try {
System.out.println("Connection accepted: " + socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(socket.getInputStream())); //取得Socket实例中的输入字节流并转换成字符流
// Output is automatically flushed
// by PrintWriter:
PrintWriter out =
new PrintWriter(
new BufferedWriter( //PringWriter(Socket.输出流 , "是否实时响应")
new OutputStreamWriter(socket.getOutputStream())),true); //建立输出流实例
while (true) {
String str = in.readLine(); //读端口输入流
if (str.equals("END")) //遇到'END'结束进程并关口端口和流
break;
System.out.println("Echoing: " + str); //向屏幕输出字符串
out.println("Server: "+str+"!!!"); //向端口输出字符串
}
// Always close the two sockets...
} finally {
System.out.println("closing...");
socket.close(); //关闭端口响应实例
}
} finally {
s.close(); //关闭服务响应实例
}
}
} ///:~
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -