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();
答案 0 :(得分:1)
您的代码不完整,因此很难肯定地说,但请注意,在Handler的构造函数中创建并启动了一个线程,该线程执行run()
。
在该函数内部(因此在单独的线程中),输入流从套接字读入BufferedReader,从中获取第一行。
线程将阻塞,直到通过套接字连接接收到一行。
因为你的代码已从这一点切断,我不知道它还做了什么。
答案 1 :(得分:1)
在您的代码中,服务器将继续监听传入的客户端。
Socket clientSocket = serverSocket.accept();
serverSocket.accept()
等待直到找到连接或客户端。
如果找到客户端,则accept()
函数返回一个本地套接字,该套接字连接到客户端的另一个套接字,该套接字在您的代码中被赋予clientSocket
。
new Handler(clientSocket);
现在clientSocket
已提供给Handler
类,您正在使用thread
来读取clientSocket
给出的数据。
此处thread
的目的是分别处理每个传入的clientSocket
。
答案 2 :(得分:0)
我不确定代码到底做了什么,但是根据OOP的概念向你解释它,每次执行while循环时它都会创建一个Handler类的实例。
警告:while(true)循环是错误的代码,当项目运行时,它将以无限循环运行。