繁体   English   中英

服务器套接字中的线程和处理程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM