|
||
|
|
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 28/02/2007Conexão via Sockets
Dayvid Lima Desenvolvedor Java há mais de 5 anos, atualmente consultor java em empresa multinacional utilizando recursos avançados da tecnologia J2EE com servidores de aplicação em plataforma Solaris para gerenciamento de redes e integração de sistemas.
Hoje iremos criar uma aplicação dividida em duas partes, uma será um "server" que ficará "ouvindo" uma porta pré-definida por nós e a outra parte será um "client" que fará o acesso via sockets nesse servidor para trocar informações. Esse conceito é muito utilizado para realizar acesso a equipamentos e/ou outros computadores para troca de informações, tanto utilizando aplicações que utilizam um "server" próprio quanto aplicações que necessitam acessar um outro tipo de servidor como por exemplo um servidor de Telnet. Iremos primeiro criar nosso "server", para esse desenvolvimento estou utilizando o Eclipse (link para ele no final da matéria), porém podemos criar e rodar essa aplicação sem a utilização de qualquer IDE, apenas tendo o JDK na máquina. Abaixo seguem os códigos das aplicações. Server.java public class Server { // porta que esse servidor ficara "ouvindo" public void start(){ String message = null; try { System.out.println("msg recebida: " + message); // tratamentos especiais Client.java import java.io.*; public class Client { private final String SERVER_IP = "127.0.0.1"; // IP do server public void start(){ try { // recebe as primeiras linhas enviadas pelo server stdIn = new BufferedReader(new InputStreamReader(System.in)); O Server: O que o server faz é ficar "ouvindo" uma determinada porta (no nosso caso a porta 5050), receber tudo que for informado nessa porta e mostrar na tela. Os pacotes necessários para utilização de sockets são: Com eles temos os componentes necessários para criação de um servidor socket, para o tráfego de dados desse servidor e para os tratamentos de erros (exceptions). Aqui definimos qual porta queremos que o nosso server fique "ouvindo". Agora criamos a conexão em sim, é aqui que ele começa a "ouvir" essa porta: Assim que ele receber uma conexão na porta que ele está "ouvindo" ele cria um canal de comunicação com quem acessou essa porta: E começa a receber as mensagens enviadas:
if(message.equalsIgnoreCase("fim") || message.equalsIgnoreCase("shutdown")){
O Client acessa uma PORTA em um IP pré-definido, recebe as mensagens de boas-vindas do servidor, e envia para o server tudo que for digitado. Para isso também temos alguns passos básicos: Os pacotes necessários para utilização de sockets são: Com eles temos os componentes necessários para fazer a conexão via sockets com algum servidor, trocar mensagens com o mesmo e para os tratamentos de erros (exceptions). Aqui temos duas contantes onde definimos o IP de onde vai estar o server e a porta que mandamos o server ficar "ouvindo", caso o server esteja na sua própria máquina você pode deixar o IP como "127.0.0.1". private final String SERVER_IP = "127.0.0.1"; // IP do server Agora criamos a conexão com o server: E recebemos todas as mensagens que o server nos enviar no momento da conexão: // recebe as primeiras linhas enviadas pelo server
Fazendo funcionar: Existem diversas formas de compilar e rodar o programa mostrado aqui, segue abaixo os passos para rodar a partir da linha de comando do DOS: 1 - salve o primeiro código em um arquivo chamado Server.java 1 - Abra duas janelas (dois prompts) do DOS e entre no diretório onde você compilou os arquivos Agora tudo que for digitado no Client será recebido pelo Server e mostrado na janela do server. Você pode rodar o Server em uma máquina e o Client em outra, basta para isso colocar no Client o endereço IP da máquina onde o Server está rodando. Também é possível utilizar outra porta para a comunicação; Veja aqui alguns "screen shots" do Server e do Client rodando em minha máquina:
Espero que tenham gostado do artigo, abraços e até o próximo. Artigos relacionados
Links relacionados
Thiago Sciotta <thiagog3@gmail.com>
Parabens! Primeira coluna de sockets em português com tanto detalhamento como o seu! Continue assim :D
![]() ![]() ![]() ![]() ![]() Eduardo <eduardocnegrao@gmail.com>
Muito bom! Parabéns! Agora ficou fácil entender Sockets em java!
Gostaria muito que, agora voce escrevesse algo desse assunto com um server recebendo multiplas conexões. Obrigado. ![]() ![]() ![]() ![]() ![]() Lília <lilia@tambasa.com.br>
Excelente artigo. Bem claro e objetivo. Deu pra entender perfeitamente.
Valeu!! ![]() ![]() ![]() ![]() ![]() Dayvid Lima
Obrigado a todos pelo apoio e comentários.
Abraços, Dayvid ![]() ![]() ![]() ![]() ![]() Nilson Deitz <nilsondeitz@yahoo.com.br>
Parabéns Dayvid. Deveria exitir mais pessoas como você pois compartilha seus conhecimentos com os outros.
![]() ![]() ![]() ![]() ![]() Filipe <filipesampaio@hotmail.com>
Muito bom o código exemplo e as explicações, parabéns.
![]() ![]() ![]() ![]() ![]() Marcelo S. Oliveira <scisses@gmail.com>
caramba meus conhecimentos aumentaram bastantes depois de dessa leitura que eu fiz.
Seu codigo e bem elegante cara valew ![]() ![]() ![]() ![]() ![]() Joao Alfredo <nhsjuaum@gmail.com>
Ótimo artigo.. Muito bem explicado, fui obrigado a deixa meu recado! Continue assim..
![]() ![]() ![]() ![]() ![]() Piruli
Por fin encuentro a alguien que explica detenidamente la programación de un socket, la compilación y ejecución.
Muchas gracias ![]() ![]() ![]() ![]() ![]() Tiago Soczek <tiago@osczke.net>
Parabéns! Ficou muito bom! Só falta agora implementá-lo c/ Thread's!
![]() ![]() ![]() ![]() ![]() aureo farias <aureosc@hotmail.com>
quero entrar no atrativa e ñ to conseguindo por causa de eerro de conexão socket como posso atuar??
![]() ![]() ![]() ![]() ![]() ![]() |
|
|