Solicitar conexão socket com usuário e senha

7 respostas
P

Preciso conectar via socket em uma aplicação e pra isso preciso também enviar usuário e senha, normalmente faço assim:

socket cliente = new Socket(ip,porta)

Como faço pra incluir usuário e senha?

7 Respostas

A

Pedro Ribeiro:
Preciso conectar via socket em uma aplicação e pra isso preciso também enviar usuário e senha, normalmente faço assim:

socket cliente = new Socket(ip,porta)

Como faço pra incluir usuário e senha?

depende da aplicação que vc está tentando conectar.

Geralmente, primeiro a conexão é aberta, depois são trocadas credenciais, e o servidor permite ou não o acesso

P

aechiara:
Pedro Ribeiro:
Preciso conectar via socket em uma aplicação e pra isso preciso também enviar usuário e senha, normalmente faço assim:

socket cliente = new Socket(ip,porta)

Como faço pra incluir usuário e senha?

depende da aplicação que vc está tentando conectar.

Geralmente, primeiro a conexão é aberta, depois são trocadas credenciais, e o servidor permite ou não o acesso

Você está dizendo pra eu tentar fazer a conexão sem usuário e senha pra ver se passa? Tem uma outra aplicação python que faz a mesma conexão nesta aplicação que preciso conectar e que envia usuario e senha.

No caso de eu solicitar a conexão pra depois enviar o usuário e senha, como faço isso?

U

O que você pode fazer é um método conectar onde você passa como parâmetros o usuário e senha. Dentro deste método ele já faz a conexão com o servidor e já passa os parâmetros…

Não tem jeito, para fazer algum tipo de autenticação você tem que estar conectado primeiro, não é?

P

ul1sses:
O que você pode fazer é um método conectar onde você passa como parâmetros o usuário e senha. Dentro deste método ele já faz a conexão com o servidor e já passa os parâmetros…

Não tem jeito, para fazer algum tipo de autenticação você tem que estar conectado primeiro, não é?

Então pelo exemplo em python que me passaram eu entendi que eu conecto e depois eu autentico com usuário e senha.

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 HOST = '127.0.0.1'
 PORT = 5000
 USUARIO = 'ypytrix'

 s.connect(("127.0.0.1", 5000))

 s.send("\r\n")
 s.send("Action: login\r\n")
 s.send("Username: %s\r\n" % USUARIO)
 s.send("Secret: %s\r\n" % USUARIO)
 s.send("\r\n")
 s.send("Action: PauseQueueMember\r\n")
 s.send("Agent: %s\r\n" % agente)
 s.send("\r\n")
A

sim, vc abre o socket, aí utilizando essa conexão que acabou de abrir, vc envia os dados de usuário / senha ou qualquer outro dado que seja necessário

mas é importante saber qual a ordem e a forma que o software do outro lado espera receber essas informações

no caso do código que vc mandou, é só seguir os mesmos passos do programa

abre o socket (connect)
envia um “\r\n”
envia “Action login\r\n”
envia “Username: usuario\r\n”
envia “Secret: usuario\r\n”

parece bem simples

P

aechiara:
sim, vc abre o socket, aí utilizando essa conexão que acabou de abrir, vc envia os dados de usuário / senha ou qualquer outro dado que seja necessário

mas é importante saber qual a ordem e a forma que o software do outro lado espera receber essas informações

no caso do código que vc mandou, é só seguir os mesmos passos do programa

abre o socket (connect)
envia um “\r\n”
envia “Action login\r\n”
envia “Username: usuario\r\n”
envia “Secret: usuario\r\n”

parece bem simples

Ta mas depois de abrir o socket como fazer o restante em java?

U

OutputStream e InputStream… tem alguns exemplos prontos se você procurar melhor.

Um pequeno exemplo abaixo. Quando o cliente se conecta ao servidor, o servidor envia uma mensagem para o cliente e esse imprime na tela a mensagem:

import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;

public class TesteSocketsClient {

	public static void main(String[] args) throws IOException, InterruptedException {
		
		Socket s = new Socket("127.0.0.1", 8080);
		
		DataInputStream is = new DataInputStream(s.getInputStream());
		
		String resposta = is.readUTF();
		
		System.out.println(resposta);
		
	}

}
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class TesteSockets {

	public static void main(String[] args) throws IOException {
		
		ServerSocket ss = new ServerSocket(8080);
		
		while (true) {
			Socket s = ss.accept();
			
			DataOutputStream os = new DataOutputStream(s.getOutputStream());
			
			if (s != null) {
				os.writeUTF("Conectado OK.");
				os.flush();
				
			}
			
		}
		
	}

}
Criado 21 de março de 2012
Ultima resposta 22 de mar. de 2012
Respostas 7
Participantes 3