Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

miudo23

Sockets em Java

Mensagens Recomendadas

miudo23    0
miudo23

boas,

algem conhece algm tutorial para aprender a mexer em sockets e assim???

tenho k fazer uma firewall em telnet e como tal vou precisar de implementar um servidor....etc...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
miudo23    0
miudo23

Boas, ainda relacionado com o servidor em java :-[

//declaro as variaveis
ServerSocket serv=null;
Socket s=null;
DataInputStream entrada=null;
DataOutputStream saida=null;

try{
		             
serv = new ServerSocket(23);        
s = serv.accept();
		             
entrada = new DataInputStream(s.getInputStream());
saida = new DataOutputStream(s.getOutputStream());

saida.writeUTF("Insira o login: ");
        login=entrada.readUTF();

saida.writeUTF("Insira a Password: ");
pass=entrada.readUTF();



if(login.compareToIgnoreCase("admin")==0 && pass.compareToIgnoreCase("teste")==0){

			saida.writeUTF("Valido");

}else{

			saida.writeUTF("Invalido");
        }

}catch(IOException e){
		         

		   System.out.println("Algum problema ocorreu para criar ou receber o socket.");
		         
		   }finally{
		             
		       try{
		                 
		       
		         s.close();
		                 
		       
		         serv.close();
		                 
		         }catch(IOException e){
		  }
}
  }			   
}

neste momento tenho o meu servidor assim.....mas queria usar o telnet do windows para comunicar com o servidor.

mas ao fazer open "ip" no telnet preciso de lhe dar um ip....e eu nao sei fazer isso em java....em pthon bastava fazer um servidor.bind('127.0.0.1',23) sendo 127.0.0.1 o ip do servidor e 23 a porta usada pelo telnet do windows.

algm me pode ajudar???

obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

Penso que é isto que queres

import java.net.InetSocketAddress;
import java.net.ServerSocket;


public class ServerBlind {

public static void main (String args []){
	InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 154);
	try{
		ServerSocket server = new ServerSocket();
                        Socket s;
		server.bind(addr);
		s = server.accept();
	}
	catch(Exception e){
		e.printStackTrace();
	}
}
}

O resto do processo é idêntico ao ServerSocket normal. :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
miudo23    0
miudo23

magician, desculpa se estou a ser chato..... :wallbash:

ja criei o servidor bem como todas as classes para o gerir....mas agr estoiu com um problema....

ponho o servidor a correr, e abro a telnet do wimdows, e ligo-me ao servidor...ate aqui tudo bem... o problema é a tentar escrever na telnet e a receber os dados inseridos na telnet...nomeadamente username e pass....bem como a conversasao k ira decorres apos a autenticacao...

estou a criar um canal de entrada e outtro de saida:

DataInputStream entrada=null;

DataOutputStream saida=null;

depois estou a escrever no telnet

saida.writeUTF("Username: ");

username=entrada.readUTF();

e é aqui que me da erro....e nao consigo avancar com isto...alguma sugestao???

obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

Se queres que o Telnet faça alguma coisa tens de criar o protocolo de conversação neste caso o protocolo TELNET http://tools.ietf.org/html/rfc854 tambem podes usar HTTP se não me engano também é suportado pela telnet.

De uma forma ou e outra tens de criar um dialogo que a telnet entenda não podes apenas mandar para lá texto aleatório.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
miudo23    0
miudo23

deixa ver s percebi....tenho k criar a classe Telnet no servidor..e por cada ligaçao criar um objecto do tipo telnet....para poder comunicar com o Telnet...e isso???

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

Não lol tens de criar um dialogo um seja o telnet está programado para perceber determinados diálogos nomeadamente o TELNET e HTTP pensa nisso como uma conversa entre tuas pessoas uma pessoa só entende determinadas frases tipo Nome ? e responde a essas perguntas com outras frases que a outra pessoa entende. Ou seja tens de criar frases no teu servidor para que quando o TELNET conectar conseguir dialogar com o servidor e vice versa.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
miudo23    0
miudo23

entao tem k ser uma "linguagem" especifica para o telnet entender....

e como escrevo e leio do servidor???? :-[

da-me um exemplo sff...

fazer um print no telnet tipo"ola mundo".....e ler qualquer coisa do telnet....sff

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

Pá eu não conheço o protocolo da TELNET mas o que tens de fazer é algo tipo

O cliente liga ao servidor e envia a frase "USER:PASS=magician:123" o servidor lê e vai ver para esta frase faz uma determinada operação de login e envia para o cliente "LOGIN=FAIL" ou "LOGIN=OK" e cliente dependendo da resposta faz um print de "Bem vindo Magician" ou "Login FAIL".

E assim sucessivamente basicamente é isto que tens de fazer mas como queres usar telnet tens de ver como o TELNET envia os pedidos e que deve ser envias as respostas para que ele perceba.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

O telnet não faz mais do que abrir uma sessão TCP, a partir dai a conversa flui com o protocolo implementado no cliente/servidor.

HTTP / SSL /SMTP / POP ou eventualmente algo inventado por ti.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade