我一直在尝试在自己创建的应用程序中开发嵌入式Web服务器。本质上,我们的主要流程是创建一个简单的Web服务器(利用ServerSocket),然后该主要流程(理论上)将用于其业务。

Main(){
    doingStuff();
    WebServer server = new WebServer();
    server.run();
    doingMoreStuff();
}

public class WebServer implements Runnable{
    ServerSocket inbound;

    //constructor
    WebServer(){
        inbound = new ServerSocket(9687);
    }

    public void Run(){
        Socket client;

        while(true){
            client = inbound.accept();
            SomeClass threadedClassThatHandlesClientMessage = new SomeClass(client);
            someclass.run();
        }
    }
}

在前面的伪代码中,我知道带有ServerSocket accept()调用的线程会阻塞,从而停止了WebServer类线程以及主线程。有什么我想念的吗?

我知道我可以创建两个可以作为单独的进程串联运行的程序,但是我希望避免使用任何IPC,而是通过在一个线程中进行数据处理,并通过通用的serverocket在单独的线程中接收数据来针对单个进程进行拍摄。尽管我对这一切还不熟悉,但我可以肯定地说,这是我忽略的那些简单事情之一,但是我将不胜感激您可以提供的任何帮助。

最佳答案

.run()上调用Runnable不会使其在新线程中运行,而是在当前线程中运行它。

您是想做new Thread (server).start ()吗?

关于java - 在非服务器应用程序中嵌入ServerSockets,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8945159/

10-11 22:53
查看更多