3.4.1. SOQUETES CLANLIB

 

A principal classe relacionada a soquetes na ClanLib é CL_Socket.

Essa classe encapsula as funções de soquetes do sistema em uma plataforma independente de versão.

O código abaixo demonstra a utilização dessa classe:

 

1   std::string str="GET /index.html HTTP/1.1\n";

2   str += "Host: clanlib.org\n\n";

3   CL_Socket sock(CL_Socket::tcp);

4   sock.connect(CL_IPAddress ("clanlib.org", "80"));

5   sock.send(str);

 

6   while (true){

7   char buffer[16*1024+1];

8   int received = sock.recv(buffer, 16*1024);

9       if (received == 0) break;

10      buffer[received] = 0;

11      std::cout << buffer;

12  }

13  std::cout << std::endl;

 

O código do exemplo anterior demonstra a utilização da classe CL_Socket para obter a página inicial do site da ClanLib.

As linhas 1 e 2 montam uma string de requisição a ser enviada ao servidor após a conexão ter sido efetuada. Essa string de conexão foi montada de acordo com o protocolo HTTP 1.1, descrito na RFC 2616 [RFC 2616, 1999].

Na linha 3, um objeto CL_Socket é criado para trabalhar com o protocolo TCP/IP. As linhas 4 e 5 conectam o objeto CL_Socket ao servidor e enviam a requisição para obtenção da página index.html respectivamente. Finalmente as linhas 6 a 13 exibem o conteúdo obtido como resposta do servidor no console padrão de saída.

CL_Socket também pode ser usada em conjunto com CL_EventTrigger e CL_EventListener para esperar por dados recebidos via soquete.

CL_EventTrigger é uma classe que representa um evento que pode ser disparado, enquanto que CL_EventListener é uma classe usada para coletar um conjunto de eventos CL_EventTrigger e esperar que um deles ocorra.