As chamadas elementares do sistema de soquete de transferência de dados para enviar e receber dados pelo soquete são send() e recv(). Cada chamada leva quatro parâmetros:
- descritor de soquete: O descritor de soquete do soquete no qual enviar ou receber dados.
- buffer: Um ponteiro para o buffer de memória que contém os dados a serem enviados ou é usado para armazenar os dados recebidos.
- comprimento: O comprimento dos dados a serem enviados ou recebidos.
- sinalizadores: Um conjunto de sinalizadores que podem ser usados para modificar o comportamento da chamada.
A chamada `send()` transmite dados do buffer do programa para o buffer do par através do soquete.
A chamada `recv()` recebe dados do buffer do par para o buffer do programa através do soquete.
Os seguintes sinalizadores podem ser usados com `send()`:
- MSG_CONFIRM :faz com que os dados sejam enviados pela rede imediatamente.
- MSG_DONTROUTE: Impede que os dados sejam roteados pelo gateway padrão. Este recurso pode ser útil para enviar dados para um host específico.
- MSG_EOR: Indica que a mensagem é o fim de um registro.
- MSG_MORE :indica que mais dados estão sendo enviados.
-MSG_NOSIGNAL :Impede a geração de um sinal SIGPIPE ao enviar dados para um soquete fechado.
-MSG_OOB :Envia os dados fora da banda. Este recurso pode ser útil para enviar dados urgentes.
Os seguintes sinalizadores podem ser usados com `recv()`:
-MSG_WAITALL: Faz com que a chamada seja bloqueada até que todo o comprimento dos dados seja recebido.
-MSG_PEEK: Permite que o aplicativo espie os dados sem removê-los do buffer.
-MSG_OOB :Recebe os dados fora de banda.
As chamadas `send()` e `recv()` podem ser usadas para enviar e receber dados de qualquer tipo. No entanto, eles normalmente são usados para enviar e receber dados de caracteres.