3.4.3. PACOTES DE REDE

 

A maneira mais simples de se trocar informações entre computadores através de uma aplicação ClanLib é a construção de pacotes de dados e seu envio através de funções como CL_NetComputer::send() e CL_NetGroup::send().

A classe CL_NetComputer representa um computador conectado a uma sessão, enquanto que CL_NetGroup, identifica um grupo de computadores conectados a uma sessão.

A classe CL_NetPacket é usada para a construção de pacotes de rede, que podem ser enviados de um computador para outro em uma sessão ClanLib. O exemplo abaixo demonstra o envio de uma mensagem para um objeto CL_NetComputer, denominado computador1, que representa um computador conectado à sessão.

 

1     CL_NetPacket msg;
2     msg.output.write_string(“Msg para computador1”);
3     computador1.send("Teste", msg);

 

Nesse exemplo, um objeto da classe CL_NetPacket é criado na linha 1 e uma mensagem colocada nesse pacote (linha 2). Finalmente essa mensagem é enviada sob o nome de “teste”, para o objeto computador1 (linha 3), instanciado de CL_NetComputer.

O objeto computador1 poderia reconhecer e processar o pacote com o seguinte código, onde um slot é conectado ao sinal de recepção de pacotes de rede e a função on_netpacket definida para ser chamada quando tal evento ocorrer (linhas 1 e 2). As linhas 3 a 6 demonstram a assinatura da função e seu corpo, que grava o pacote recebido em uma variável e o exibe no console padrão de saída.

 

1    CL_Slot slot = sessao.sig_netpacket_receive("Teste")

2    .connect(this, &Jogo::on_netpacket);

 

3    void Jogo::on_netpacket (CL_NetPacket &packet,

4    CL_NetComputer &computer){

5        std::string pacote = packet.input.read_string();

6        std::cout << "recebeu pct " << pacote << "\n"; }