[英]Threads and Handlers in server socket
new Handler(clientSocket);
没有对象实例化? 有人可以提供一些见解吗?
public class Server1 {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(15897);
while (true) {
Socket clientSocket = serverSocket.accept();
new Handler(clientSocket);
}
} catch (IOException e)
{
System.out.println("problem here 1");
}
}
}
class Handler implements Runnable {
int red;
int reads, r;
Socket clientSocket;
Handler(Socket s)
{
this.clientSocket = s;
new Thread(this).start();
}
public void run(){
BufferedReader bufferedReader;
try {
bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine = bufferedReader.readLine();
你的代码是不完整的,所以很难肯定地说,但是在Handler的构造函数中观察到一个线程被创建并启动,执行run()
。
在该函数内部(因此在单独的线程中),输入流从套接字读入BufferedReader,从中获取第一行。
线程将阻塞,直到通过套接字连接接收到一行。
因为你的代码从那时起被切断了,我不能说它还有什么用。
在您的代码中,服务器将继续监听传入的客户端。
Socket clientSocket = serverSocket.accept();
serverSocket.accept()
等待直到找到连接或客户端。 如果找到client,则accept()
函数返回一个本地套接字,该套接字连接到客户端的另一个套接字,该套接字在代码中提供给clientSocket
。
new Handler(clientSocket);
现在clientSocket
被赋予Handler
类,您在其中使用thread
来读取该clientSocket
给出的数据。
的目的thread
这里是处理每个传入clientSocket
seprately。
我不确定代码究竟做了什么,但是根据OOP的概念向你解释它,每次执行while循环时它都会创建一个Handler类的实例。
警告:while(true)循环是错误代码,当项目运行时,它将以无限循环运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.