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. |
|