узнать, что сокет готов к отправке данных
От: fair  
Дата: 13.03.06 19:24
Оценка:
Использую в своей программе 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);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.