Um cliente que deseja enviar datagramas UDP deve primeiro vincular-se a uma porta. Isso pode ser feito usando a chamada de sistema `bind()`. Depois que o cliente estiver vinculado a uma porta, ele poderá enviar datagramas usando a chamada de sistema `sendto()`. A chamada de sistema `sendto()` requer os seguintes argumentos:
- O descritor de soquete
- Um ponteiro para o buffer que contém os dados a serem enviados
- O comprimento dos dados a serem enviados
- As bandeiras
- O endereço de destino
- O comprimento do endereço de destino
O cliente também deve especificar o endereço de destino e a porta do servidor para o qual deseja enviar os dados. Esta informação pode ser obtida resolvendo o nome de domínio ou endereço IP do servidor usando as chamadas de sistema `gethostbyname()` ou `gethostbyaddr()`.
Depois que o cliente envia o datagrama, ele pode aguardar uma resposta do servidor. O cliente pode fazer isso usando a chamada de sistema `recvfrom()`, que será bloqueada até que um datagrama seja recebido. A chamada de sistema `recvfrom()` requer os seguintes argumentos:
- O descritor de soquete
- Um ponteiro para o buffer no qual armazenar os dados recebidos
- O comprimento máximo dos dados recebidos
- As bandeiras
- Um ponteiro para o endereço de origem
- Um ponteiro para o comprimento do endereço de origem
Quando o cliente recebe um datagrama, ele pode processar os dados e enviar uma resposta de volta ao servidor, se necessário.