示例#1
0
void TcpServer::newConnectionCallback(const TcpConnectionPtr& connection)
{
    std::cout << "thread id = " << std::this_thread::get_id() << std::endl;

    //构造通信地址结构
    tcp::socket& socket = connection->socket();
    std::string remote_address = socket.remote_endpoint().address().to_string();
    uint16_t remote_port = socket.remote_endpoint().port();
    InetAddress peerAddress(remote_address, remote_port);

    //设置链接回调
    connection->setWriteCompletedCallback(_writeCompletedCallback);
    connection->setReadCompletedCallback(_readCompletedCallback);
    connection->setConnectionClosedCallback(_connectionClosedCallback);

    if (_newConnectionCallback)
    {
        _newConnectionCallback(connection, peerAddress);
    }
}
示例#2
0
文件: acceptor.hpp 项目: hnicypb/Zeus
    void acceptHandler(const TcpConnectionPtr& connection)
    {
        postAcceptEvent();
        if (connection->isOpen())
        {
            if (!_newConnectionCallback.empty())
            {
                //构造通信地址结构
                tcp::socket& socket = connection->socket();
                std::string remote_address = socket.remote_endpoint().address().to_string();
                uint16 remote_port = socket.remote_endpoint().port();
                InetAddress peerAddress(remote_address, remote_port);

                //回调到新连接处理函数
                _newConnectionCallback(connection, peerAddress);
            }
            else
            {
                connection->close();
            }
        }
    }