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"; } |
|