Итак, у меня есть проблема, когда я пытаюсь получить struct sockaddr_in из моей карты и использую tmp var, чтобы затем отправить stuct sockaddr_in через сокет, используя метод sendto.
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 ++ и может иметь плохую ссылку.
Спасибо всем!!!!
Задача ещё не решена.