Você está na página 1de 2

C#: Classes para comunicao via Sockets

Tenho observado que alguns programadores se


perdem um pouco quando o assunto sockets em
.Net. Na realidade, quem estava acostumado com os
componentes prontos do Delphi para comunicao via
socktes, fica realmente um pouco perdido de incio
quando comea a trabalhar com sockets na plataforma
.Net. Sendo assim, resolvi desenvolver um
ClientSocket e um ServerSocket nos moldes dos
componentes do Delphi. Note que a prpria lingugem
C# foi desenvolvida pelo mesmo criador do Delphi e
ele usou muitos conceitos do Delphi ao participar da
criao dos elementos da Plataforma .Net.

Eu criei uma dll para cada um. Cada dll tm suas


propriedades, mtodos e eventos que permitem um
perfeito gerenciamento das conexes. Por exemplo, o
ServerSocket capaz de aceitar vrias conexes
indexadas. Quando uma nova conexo ativa ou
quando uma conexo perdida, os ndices das
conexes so atualizados. Ainda possvel enviar e
receber arquivos pelos sockets.

Aqui vemos tambm um bom exemplo de criao de


eventos. Existem eventos de nova conexo, conexo
perdida, mensagem recebida etc.

Primeiro falaremos do ClientSocket. Vemos na Figura


abaixo o ClassDiagram da dll.

Quando ns criamos uma nova classe, o Construtor da classe exige que sejam
passados os parmetros para se estabelecer a conexo - ClientSocket(string IP, int
port). No entanto, a conexo somente estabelecida com o mtodo Connect.

O mtodo SendFile tem opo de enviar ou no mensagens antes e depois de se


enviar o arquivo. Isso pode ser usado para criar um gerenciador de troca de
arquivos, criando-se um protocolo apropriado para a comunicao.

Podemos ver na Figura abaixo o ClassDiagram da classe ServerSocket.

Podemos perceber que esta classe um pouco mais complexa que a anterior,
pois ela usada para gerenciar vrias conexes. Os mtodos que desejo destacar
so:
ServerSocket - Construtor da classe. definida a porta para a espera por
chamada (porta que ser usada por todas as conexes).

Active - Com este mtodo, o Socket passa a escutar a


porta e fica esperando por chamadas. Quando
executado, o evento OnListen disparado.

Deactive - Fecha todas as conexes.

CloseConnection - Derruba ou termina um conexo


especfica, definida pelo ndice da conexo.

Connected - Verifica se uma conexo especificada


pelo ndice est realmente conectada.