c ++ maps和struct sockaddr_in复制值并使用sendto

时间:2014-11-09 13:14:54

标签: c++ sockets networking map sockaddr-in

好吧,所以当我尝试从我的地图中获取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 ++不好,可能有一个不好的参考。

感谢所有!!!!

0 个答案:

没有答案