3.4.2. SESSÕES DE REDE CLANLIB

 

Uma sessão de rede na ClanLib pode ser criada através da classe CL_NetSession, que representa:

·         um contêiner de computadores conectados;

·         um conjunto de sinais chamados quando da aceitação de conexão, desconexão e reconexão computadores ao sistema;

·         sinais que são chamados quando pacotes de rede são recebidos.

 

Uma sessão de rede na ClanLib pode se tornar um servidor, um cliente, ou qualquer outro tipo de combinação desejada e dessa forma, é possível que seja criado um modelo ponto a ponto ou fazer servidores se conectarem a outros servidores e ainda permitir que um cliente se conecte a mais de um servidor ao mesmo tempo.

O código a seguir demonstra a utilização de CL_NetSession, com a criação de um servidor e posterior conexão de um cliente:

 

1    void Sessao::exemplo(){

2        CL_NetSession host("Meu Jogo");

3        std::cout << "Sessao srv criada" << std::endl;

4        CL_Slot

5        slotCon=host.sig_computer_connected().connect(

6        this, &Sessao::on_connect);

7        std::cout <<"Srv escutando a porta 9999...\n";

8        host.start_listen("9999");

 

9        CL_NetSession cli("Hello");

10       std::cout << "Sessao cli criada" << std::endl;

11       std::cout << "Cli conectando..." << std::endl;

12       cli.connect(CL_IPAddress("localhost", "9999"));}

 

13   void Sessao::on_connect(CL_NetComputer &computer){

14       std::cout <<"Computador conectado de:"<<

15       computer.get_address().get_address();}

 

No código anterior, verifica-se na linha 2 a criação de uma sessão servidora através do objeto host de CL_NetSession. A linhas 4 a 6 criam um slot associado ao evento gerado após uma conexão ao servidor e ainda define a função que será chamada quando tal evento ocorrer.

O código da linha 8 faz com quer o objeto host comece a escutar a porta 9999, o que permitirá que tal objeto reconheça tentativas de conexão nessa porta.

As linhas seguintes demonstram os códigos necessários para a conexão de um cliente à sessão servidora criada. Na linha 9, uma sessão cliente é criada para possibilitar a tentativa de conexão. A linha 12 demonstra o comando necessário para que o cliente se conecte ao servidor através da porta 9999.

Os comandos nas linhas 13 a 15 são a função e seu corpo, que contém os comandos que serão executados quando o evento de conexão ocorrer.

A execução de tal seqüência de programa geraria o seguinte resultado:

 

 

 Figura 3.1: Utilização de CL_NetSession

Fonte: Dados de Pesquisa