Использую в своей программе UDP сокет для отправки данных на сервер.
Появился вопрос:
Как узнать, что сокет готов к отправке данных (т.е. что протоколам нижнего уровня уже известен MAC-адрес необходимого компьютера) и прекратить отправку данных?
Например, в следющем коде:
SOCKET sock;
SOCKADDR_IN addrOfServer, addrOfCli;
sock = socket(AF_INET, SOCK_DGRAM, 0);
addrOfCli.sin_family = AF_INET;
addrOfCli.sin_addr.s_addr = htonl(INADDR_ANY);
addrOfCli.sin_port = htons(0);
if( bind(sock, (SOCKADDR*)&addrCli, sizeof(SOCKADDR_IN)) == SOCKET_ERROR )
{
return false;
}
char data;
addrOfServer.sin_family = AF_INET;
addrOfServer.sin_port = htons(UDP_PORT);
addrOfServer.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx");
// Как здесь убедиться, что сокет готов к отправке данных и если готов(т.е. уже будет известен удаленный MAC-адрес), то не отправлять данные?
// может использовать не sendto(), а что-то другое?
sendto(sock, &data, 1, 0, (SOCKADDR*)&addrOfServer, sizeof(SOCKADDR_IN));
closesocket(sock);