C++ RCF 2.2.0.0 源码:如何判断新连接并获取 IP 和端口
在 C++ RCF(Remote Call Framework)中,可以使用 RCF::ServerTransport::onAccept() 函数来判断是否有新的连接进来,并在连接进来时输出 IP 和端口信息。以下是一个简单的实现例子:
#include <iostream>
#include <RCF/RCF.hpp>
class MyService
{
public:
void onConnect(const RCF::RcfSessionPtr& sessionPtr)
{
// 获取客户端的 IP 和端口信息
std::string ip = sessionPtr->getRemoteIp();
int port = sessionPtr->getRemotePort();
std::cout << 'New client connected from ' << ip << ':' << port << std::endl;
}
};
int main()
{
RCF::RcfInit rcfInit;
// 创建 RCF 服务器
RCF::RcfServer server(RCF::TcpEndpoint(50001));
// 注册服务
MyService myService;
server.bind<MyService>(myService);
// 设置连接回调函数
server.setOnConnectCallback(&MyService::onConnect, &myService);
// 启动服务器
server.start();
// 等待退出信号
RCF::waitForTerminationSignal();
// 停止服务器
server.stop();
return 0;
}
上述例子中,我们创建了一个名为 MyService 的服务类,并在其中定义了一个 onConnect() 函数,用于处理新连接的回调。在 onConnect() 函数中,我们使用 getRemoteIp() 和 getRemotePort() 函数获取客户端的 IP 和端口信息,并输出到控制台。
然后,在 main() 函数中,我们创建了一个 RCF 服务器,并通过 bind() 函数将 MyService 服务类绑定到服务器上。然后,我们使用 setOnConnectCallback() 函数将 onConnect() 函数设置为连接回调函数。最后,我们启动服务器并等待退出信号。
当有新的连接进来时,onConnect() 函数会被调用,并输出客户端的 IP 和端口信息到控制台。
原文地址: https://www.cveoy.top/t/topic/eCdj 著作权归作者所有。请勿转载和采集!