📄 echoserverthread.java
字号:
//EchoServerThread.java
import java.io.*;
import java.net.*;
public class EchoServerThread
{
//服务器端的服务端口。
public static final int SERVERPORT = 9999;
public static void main(String[] args )
{
try
{
//已经连接上的客户端的序号。
int number = 1;
//建立服务器端倾听套接字。
ServerSocket s = new ServerSocket(SERVERPORT);
System.out.println("Started: " + s);
while(true)
{
//等待并接收请求,建立连接套接字。
Socket incoming = s.accept( );
System.out.println("Connection " + number +
" accepted: ");
System.out.println(incoming);
//启动一个线程来进行服务器端和客户端的数据传输。
//主程序继续监听是否有请求到来。
Thread t = new EchoThread(incoming, number);
t.start();
number++;
}
}
catch (IOException e)
{
System.err.println("IOException");
}
}
}
class EchoThread extends Thread
{
private Socket s;
int n;
public EchoThread(Socket incoming, int number)
{
s = incoming;
n = number;
}
public void run()
{
try
{
//新建网络连接的输入流。
BufferedReader in = new BufferedReader
(new InputStreamReader(s.getInputStream()));
//新建网络连接的自动刷新的输出流。
PrintWriter out = new PrintWriter
( new BufferedWriter(new OutputStreamWriter(
s.getOutputStream())), true);
System.out.println( "Hello! Enter BYE to exit." );
//回显客户端的输入。
while (true)
{
//从网络连接读取一行,即接收客户端的数据。
String line = in.readLine();
//如果接收到的数据为空(如果直接按Enter,不是空数据),则退出循环,关闭连接。
if (line == null) break;
else
{
if (line.trim().equals("BYE"))
{
System.out.println("The client " + n + " entered BYE!");
System.out.println("Connection " + n + " will be closed!");
break;
}
System.out.println("Echo " + n + ": " + line);
//向网络连接输出一行,即向客户端发送数据。
out.println("Echo " + n + ": " + line);
}
}
//关闭套接字。
s.close();
}
catch (IOException e)
{
System.err.println("IOException");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -