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); } }
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(); } } }