📄 threadserver.java
字号:
package tcp;
import java.io.*;
import java.net.*;
class ServerThreadCode extends Thread {
// 客户端的socket
private Socket clientSocket;
// IO句柄
private BufferedReader sin;
private PrintWriter sout;
// 默认的构造函数
public ServerThreadCode() {
}
public ServerThreadCode(Socket s) throws IOException {
clientSocket = s;
// 初始化sin和sout的句柄
sin = new BufferedReader(new InputStreamReader(clientSocket
.getInputStream()));
sout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
clientSocket.getOutputStream())), true);
// 开启线程
start();
}
// 线程执行的主体函数
public void run() {
try {
// 用循环来监听通讯内容
for (;;) {
String str = sin.readLine();
// 如果接收到的是byebye,退出本次通讯
if (str.equals("byebye")) {
break;
}
System.out.println("In Server reveived the info: " + str);
sout.println(str);
}
System.out.println("closing the server socket!");
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("close the Server socket and the io.");
try {
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class ThreadServer {
// 端口号
static final int portNo = 3333;
public static void main(String[] args) throws IOException {
// 服务器端的socket
ServerSocket s = new ServerSocket(portNo);
System.out.println("The Server is start: " + s);
try {
for (;;) {
// 阻塞,直到有客户端连接
Socket socket = s.accept();
// 通过构造函数,启动线程
new ServerThreadCode(socket);
}
} finally {
s.close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -