Что делает клиент, когда ему нужно отправить датаграммы UDP?
- Дескриптор сокета
— Указатель на буфер, содержащий данные для отправки.
- Длина данных для отправки
- Флаги
- Адрес назначения
- Длина адреса назначения
Клиент также должен указать адрес назначения и порт сервера, на который он желает отправить данные. Эту информацию можно получить путем разрешения доменного имени или IP-адреса сервера с помощью системных вызовов gethostbyname() или gethostbyaddr().
После того как клиент отправил дейтаграмму, он может дождаться ответа от сервера. Клиент может сделать это с помощью системного вызова Recvfrom(), который будет блокироваться до тех пор, пока не будет получена датаграмма. Системный вызов Recvfrom() требует следующих аргументов:
- Дескриптор сокета
— Указатель на буфер, в котором будут храниться полученные данные
- Максимальная длина получаемых данных
- Флаги
- Указатель на адрес источника
- Указатель на длину исходного адреса
Когда клиент получает дейтаграмму, он может обработать данные и при необходимости отправить ответ обратно на сервер.