我一直在尝试在自己创建的应用程序中开发嵌入式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/