【发布时间】:2014-02-26 10:08:30
【问题描述】:
我用 C++ 开发了一个程序,我想在其中存储 clientadd、clientport、servaddr、servport 在stl地图中。 我能够将值传递给地图并从地图显示。 我显示的值正确显示为(clientadd、clientport、servport) 但 servaddr 错误。
map<int, Values> items;
Values connection (inet_ntoa(clientaddr.sin_addr),ntohs(clientaddr.sin_port),inet_ntoa(servaddr.sin_addr),ntohs(servaddr.sin_port));
items.insert(pair<int, Values> (0, connection));
cout << "Size of the items map : " << items.size() << endl;
map<int,Values>::const_iterator itemsIterator = items.begin();
while(itemsIterator != items.end() )
{
Values item = itemsIterator->second;
item.printValues();
itemsIterator++; //make the iterator point to the next pair in the map
}
class Values
{
private:
char *C_addr;
int C_port;
char *S_addr;
int S_port;
public:
Values(char*,int,char*,int);
void printValues();
};
Values :: Values(char *faddr,int fport,char *gwaddr,int gport)
{
C_addr=faddr;
C_port=fport;
S_addr=gwaddr;
S_port=gport;
}
void Values::printValues()
{
cout << C_addr<<":" <<C_port<< ":" << S_addr <<":" <<S_port << endl;
}
我期待的输出
127.0.0.1 : 任何端口号 : 0.0.0.0 : 任何端口号
(即客户端地址,客户端端口,服务地址,服务端口)
但我得到这样的输出
127.0.0.1 : 任意端口号 : 127.0.0.1 : 任意端口号
【问题讨论】:
-
如何在构造函数调用中设置
char *gwaddr?您能否将此代码添加到您的问题中。 -
atualy 我从客户端连接中获得了这些值,所以这些值取决于哪个客户端连接到服务器。我添加了所有必要的代码。
标签: c++ map stl network-programming client-server