c++用一个map容器在创建tcp连接时将IP和PORT加入,close时删除IP和PORT
时间: 2024-03-19 08:44:28 浏览: 75
可以通过在创建TCP连接时将IP和PORT作为键值对存储到一个`std::map`容器中,然后在关闭连接时从容器中删除对应的键值对来实现。具体实现可以参考下面的示例代码:
```c++
#include <map>
#include <string>
#include <iostream>
// 定义 TCPConnection 类
class TCPConnection {
public:
TCPConnection(const std::string& ip, int port) : ip_(ip), port_(port) {}
void close() {
// 在关闭连接时从 map 容器中删除对应的键值对
std::cout << "Closing TCP connection to " << ip_ << ":" << port_ << std::endl;
connections_.erase(std::make_pair(ip_, port_));
}
private:
std::string ip_;
int port_;
// 定义一个静态的 map 容器来存储 TCPConnection 对象
static std::map<std::pair<std::string, int>, TCPConnection*> connections_;
// 在创建 TCP 连接时将 IP 和 PORT 作为键值对存储到 map 容器中
void addConnection() {
connections_.insert(std::make_pair(std::make_pair(ip_, port_), this));
}
};
// 初始化静态成员变量 connections_
std::map<std::pair<std::string, int>, TCPConnection*> TCPConnection::connections_;
int main() {
// 创建 TCPConnection 对象并添加到 map 容器中
TCPConnection* conn1 = new TCPConnection("192.168.1.1", 80);
conn1->addConnection();
TCPConnection* conn2 = new TCPConnection("192.168.1.2", 8080);
conn2->addConnection();
// 关闭连接并从 map 容器中删除对应的键值对
conn1->close();
conn2->close();
// 释放资源
delete conn1;
delete conn2;
return 0;
}
```
上述代码中,我们定义了一个`TCPConnection`类来表示一个 TCP 连接,其中包括 IP 和 PORT 两个成员变量。在创建 TCP 连接时,我们将 IP 和 PORT 作为键值对存储到一个静态的`std::map`容器中,并在关闭连接时从容器中删除对应的键值对。注意,为了方便起见,我们将`TCPConnection`类的构造函数和`addConnection()`函数合并在一起了。
阅读全文