使用Wt在任何端口创建网页都很容易,例如200.59.43.32:3333。
但是,有没有一个函数(我找不到),当有人向同一个端口发送数据(一些数据字符串,json等)时,它可以监听该端口。换句话说,如果有人向200.59.43.32:3333发送一个字符串“words”数据,我如何使用Wt捕获它?
编辑:如果不能使用普通字符串,是否可以使用适当的JSON?
我知道我可以使用(linux)套接字/绑定等打开另一个端口来监听这样的字符串。
发布于 2017-08-14 18:17:44
如果它只是随机数据,我不可能知道你可以用Wt。在这种情况下,您可以使用反向代理解决方案,如HAProxy,并将任何HTTP流量转发到Wt,以及将任何其他流量转发到另一个套接字。
如果你谈论的是HTTP流量,静态资源可能是你想要的。Wt的TechEmpower framework benchmarks实现包含一些定制的静态资源,您可以基于这些资源编写代码。例如,有一个PlaintextResource
class PlaintextResource : public Wt::WResource {
virtual void handleRequest(const Wt::Http::Request &request, Wt::Http::Response &response) {
response.setMimeType("text/plain");
response.addHeader("Server", "Wt");
response.out() << "Hello, World!";
}
};您可以使用request变量来检索有关请求的任何数据,请参见Wt::Http::Request。
您可以像这样访问此资源:
int main(int argc, char** argv) {
try {
Wt::WServer server(argv[0]);
server.setServerConfiguration(argc, argv, WTHTTP_CONFIGURATION);
PlaintextResource plaintextResource;
server.addResource(&plaintextResource, "/plaintext");
if (server.start()) {
int sig = Wt::WServer::waitForShutdown(argv[0]);
std::cerr << "Shutdown (signal = " << sig << ")" << std::endl;
server.stop();
}
} catch (Wt::WServer::Exception& e) {
std::cerr << e.what() << "\n";
return 1;
} catch (std::exception& e) {
std::cerr << "exception: " << e.what() << "\n";
return 1;
}
}发布于 2017-08-14 18:12:22
如果你想发送普通字符串,你需要打开一个套接字。HTTP应用程序使用HTTP协议与客户端通信,因此要实现此"Wt-way",您应该执行HTTP请求、GET或POST。
据我所知,您需要创建一个WResource,并使用WServer::addResource()在服务器中注册它,以给它一个固定的网址。之后,重新实现WResource::handleRequest()来访问HTTP请求数据。
https://stackoverflow.com/questions/45671529
复制相似问题