Jump to content

Sockets em Java


miudo23
 Share

Recommended Posts

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

Link to comment
Share on other sites

É assim ao fazeres um ServerSocket atribuis uma porta logo e ele vais trabalhar com o IP da maquina onde estás pode defeito em todo o caso se quizeres fazer um blind podes usar o outro construtor para isso http://java.sun.com/javase/6/docs/api/java/net/ServerSocket.html#ServerSocket(int,%20int,%20java.net.InetAddress).

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other sites

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. 😛

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other sites

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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other sites

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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.