сокеты — c ++ карты и структура sockaddr_in копируют значения и используют sendto

Итак, у меня есть проблема, когда я пытаюсь получить 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 ++ и может иметь плохую ссылку.

Спасибо всем!!!!

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]