【发布时间】:2018-08-09 04:02:45
【问题描述】:
服务器绑定到端口#s 上的两个套接字:6666(服务于来自客户端的 SMS 发送请求)和 6661(服务于来自客户端的 EMAIL 发送请求)。
由于我想以不同的方式为它们提供服务,我必须首先知道请求来自哪个端口,以便我可以为该服务执行代码。
那么,我的问题是如何识别端口?
如果这是不可能的,那么可以应用什么逻辑来解决这个问题?
服务器端代码是:
int main () {
zmq::context_t context (1); // Prepare our context and socket
zmq::socket_t socket (context, ZMQ_REP); socket.bind ("tcp://*:6666");
zmq::socket_t socket2 (context, ZMQ_REP); socket2.bind ("tcp://*:6661");
while (true) {
// ----------------------------------SMS CODE----------------------------------
zmq::message_t request;
socket.recv ( &request); // Wait for next request from client
/* ... // SMS Send Logic
...
*/
zmq::message_t reply (11); // Send reply back to client
memcpy (reply.data (), "SMS Details", 11);
socket.send (reply);
// --------------------------------EMAIL CODE----------------------------------
zmq::message_t request2;
socket2.recv (&request2); // Wait for next request from client
/* ... // Email Send Logic
...
*/
zmq::message_t reply2 (16); // Send reply back to client
memcpy (reply2.data (), "Email Details", 16);
socket2.send (reply2);
} // end of while
return 0;
}
【问题讨论】: