修复连接地址错误

This commit is contained in:
zcy 2022-01-05 01:31:16 +08:00
parent 6cfb31e1b9
commit 771e4a8684

View File

@ -33,15 +33,24 @@ ConnectionLibevent::ConnectionLibevent(struct bufferevent* ev, uint32_t fd, stru
m_fd(-1),
m_addr(nullptr)
{
m_event = ev;
m_fd = fd;
m_addr = p1;
std::cout << "\r\n " << m_addr << " ConnectionLibevent " << inet_ntoa(m_addr->sin_addr) << std::endl;
}
ConnectionLibevent* defaultConnAccept(struct bufferevent* ev, uint32_t fd, struct sockaddr_in* p1) {
std::cout << "defaultConnAccept " << inet_ntoa(p1->sin_addr);
return new ConnectionLibevent(ev, fd, p1);
}
void defaultConnClose(ConnectionLibevent*p) {
std::cout << "defaultConnClose close connection " << p->IpAddress() << p->SocketFd()<<std::endl;
}
int ConnectionLibevent::OnRecv(char* p, uint32_t len) {
std::cout << "OnRecv " << p << std::endl;
m_bytes_recv += len;
@ -84,10 +93,9 @@ int ConnectionLibevent::SetServer(TcpServerLibevent* p) {
}
string ConnectionLibevent::IpAddress() {
if (nullptr != m_addr) {
return string(inet_ntoa(m_addr->sin_addr));
}
return "";
std::cout<< m_addr << " IpAddress: " << inet_ntoa(m_addr->sin_addr)<<"port " << htons(m_addr->sin_port) << std::endl;
return string(inet_ntoa(this->m_addr->sin_addr));
}
TcpServerLibevent* ConnectionLibevent::Server() {
return m_parent_server;
@ -96,19 +104,19 @@ TcpServerLibevent* ConnectionLibevent::Server() {
void read_cb(struct bufferevent* bev, void* arg)
{
char buf[1024] = { 0 };
ConnectionLibevent* conn = (ConnectionLibevent*)arg;
ConnectionLibevent* conn = static_cast<ConnectionLibevent*> (arg);
bufferevent_read(bev, buf, sizeof(buf));
cout << "client " << conn->IpAddress() << " say:" << buf << endl;
cout << "client " << conn->IpAddress().c_str() << " say:" << buf << endl;
conn->OnRecv(buf, sizeof(buf));
}
void write_cb(struct bufferevent* bev, void* arg)
{
ConnectionLibevent* conn = (ConnectionLibevent*)arg;
std::cout << "connection " << conn->IpAddress() << " sended data success" << std::endl;
std::cout << "connection " << conn->IpAddress() << " sended data " << std::endl;
}
void event_cb(struct bufferevent* bev, short events, void* arg)
void event_cb(struct bufferevent* bev, short events, void* arg)
{
ConnectionLibevent* conn = (ConnectionLibevent*)(arg);
TcpServerLibevent* server = conn->Server();
@ -131,11 +139,14 @@ void event_cb(struct bufferevent* bev, short events, void* arg)
//delete conn;
}
void ServerCallbacks::cb_listener(struct evconnlistener* listener, evutil_socket_t fd, struct sockaddr* addr, int len, void* ptr)
void ServerCallbacks::cb_listener(struct evconnlistener* listener, evutil_socket_t fd,
struct sockaddr* addr, int len, void* ptr)
{
struct sockaddr_in* client = (sockaddr_in*)addr;
struct sockaddr_in* client = new(struct sockaddr_in);
memcpy(client, addr, sizeof(struct sockaddr));
cout << "connect new client: " << inet_ntoa(client->sin_addr)
<< " " << fd << " ::" << ntohs(client->sin_port) << endl;
<< " port: " << " ::" << ntohs(client->sin_port) << endl;
TcpServerLibevent* server = (TcpServerLibevent*)ptr;
if (server != nullptr) {
std::cout << "null 2" << std::endl;
@ -232,6 +243,7 @@ int TcpServerLibevent::AddConnection(uint32_t fd, ConnectionLibevent* p) {
int TcpServerLibevent::RemoveConnection(uint32_t fd) {
if (m_map_client.find(fd) != m_map_client.end()) {
auto pClient = m_map_client[fd];
this->m_handle_disconnect(pClient);
m_map_client.erase(fd);
delete pClient;
return 0;
@ -264,6 +276,7 @@ TcpServerLibevent::TcpServerLibevent(int port, string bindip) :
m_event_listener(nullptr)
{
m_handle_accept = defaultConnAccept;
m_handle_disconnect = defaultConnClose;
m_backlog = 10000;
this->m_bind_ip = bindip;
this->m_port = port;
@ -294,6 +307,7 @@ TcpServerLibevent::TcpServerLibevent(int port, string bindip) :
m_status = STOP;
std::cout << "3" << std::endl;
}
/**
* @description: start server synchronous
* @param {*}