好的,所以我有一个问题,当我尝试从我的地图中获取 struct sockaddr_in 并使用 tmp var 然后使用方法 sendto 通过套接字发送 stuct sockaddr_in 时。
map<string,struct sockaddr_in> userToAddrStrct;
在我调用 recvfrom 之后,我将 struct sockaddr 放入我的地图中,并以名称为键。然后,当我尝试在另一个请求中再次获取该地址时,我会这样做。
string getUserOfCurrAddr()
{
//recAddr is the (struct sockaddr_in) i initially use with recvfrom() method to receive address
struct sockaddr_in* address = (struct sockaddr_in*)&recAddr;
string aTmp = "";
map<string,struct sockaddr_in>::iterator i;
for(i=userToAddrStrct.begin(); i != userToAddrStrct.end(); i++) {
cout << "before checkEQ call\n";
if(checkAddrEq(i->second,*address) == 0) {
aTmp = i->first;
}
}
return aTmp;
}
string username = getUserOfCurrAddr();
map<string, struct sockaddr_in>::iterator sockIt = userToAddrStrct.find(username);
然后我尝试打印出这张地图中的内容,我得到一个段错误 11。这是我用来打印的代码。
for(map<string,struct sockaddr_in>::iterator isu = userToAddrStrct.begin(); isu != userToAddrStrct.end(); isu++) {
cout << "User: " << isu->first << " with address: " << stringAddr(isu->second) << " with port #: " << isu->second.sin_port <<"\n";
}
任何帮助将不胜感激。我对 c++ 不好,可能有不好的参考。
谢谢大家!!!!