Problemas com a conexão do java SOCKET

Oi estou tendo um problema com uma tentativa de estabelecer uma conexão cliente e servidor com o java socket eu só vi essa serie de videos tutoriais: não sou bom no assunto .

Eu não sei exatamente onde esta o problema mas quando eu tento estabelecer uma conexão com um “cliente” sendo um computador da minha casa( com firewall desativado) na mesma rede que a minha(eu com cabo e ele sem cabo mas conectado na mesma net) sendo meu computador o servidor não da certo meu computador fica infinitamente procurando conexão, é importante saber que na mesma maquina funciona quero dizer que seu executar servidor e depois meu cliente os dois no meu computador funciona.

cliente:

package cliente;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class Cliente {
public static void main(String args[] ){
	try {
		
		Socket socket = new Socket("localHost",5555);
		ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
		ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
		
		String mg = "Hello World";
		output.writeUTF(mg);
		output.flush();
		mg =  input.readUTF();
		System.out.println("resposta"+mg);
		input.close();
		output.close();
		socket.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
}

servidor:

package servidor;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {
public ServerSocket serverSocket;
public void criarServerSocket(int porta) throws IOException {
	serverSocket = new ServerSocket(porta);
}
public Socket esperandoConexao() throws IOException {
	Socket socket = serverSocket.accept();
	return socket;
}
public void tratandoConexao(Socket socket) {
     try {
		ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
		ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
		//input.readObject vai ler um objeto
		//input.readUTF vai ler um objeto
	      String mg =input.readUTF();
	    
	    	  System.out.println("mensagem recebida: "+mg);

	      output.writeUTF("Hello World");
	      output.flush();
	      input.close();
	      output.close(); 
	} catch (IOException e) {
		// TODO Auto-generated catch block
		System.out.println("problemas no tratamento da conexão"+socket.getInetAddress());
		System.out.println("erro"+e.getMessage());
		//e.printStackTrace();
	}finally {
		try {
			fecharsocket(socket);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
public void fecharsocket(Socket socket) throws IOException {
	socket.close();
}
public static void main(String args[]) {
	Servidor server = new Servidor();
	try {
		server.criarServerSocket(5555);
		System.out.println("conexão...");
		
		Socket socket = server.esperandoConexao();
		System.out.println("conectado");
		System.out.println("tratando conexão...");
		server.tratandoConexao(socket);
		System.out.println("conexão tratada");
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
}

fica sempre na etapa de aceitar o cliente :frowning:

os videos tutoriais eram esses: https://youtu.be/grVaGVHYnEw

Ao subir o cliente em outra máquina, vc tentou usando o nome da máquina ou o IP também?

Socket socket = new Socket("localHost",5555);

Vc reparou se dá algum erro (exception)?

porque no outro pc não aparece nenhum tipo de mensagens no console so no meu pelo fato de no meu eu rodar pelo eclipse e no outro ser apenas o executável já troquei a ordem de quem é o cliente e quem é o servidor e não apareceu nenhum erro
mas vou fazer o teste mesmo assim

no outro PC, é bom tu tentar executar pela linha de comando, que vc conseguirá ver qualquer erro que estiver acontecendo.

desculpe a demora tive que ver outra coisa
(servidor outro pc e cliente o meu pc)
no cliente apareceu “respostaHello World”
no servidor eu coloquei start pelo cmd e tbm não apareceu nada, mas eu sei que o programa não se fechou isso quer dizer que ele não chegou no final da aplicação eu acho

eu tbm tentei com outro projeto tbm online(um jogo de pong) e deu erro no lugar que você falou


“socket = new Socket(“localHost”,5555);”

Ao invés de localHost você vai ter que passar o IP da máquina onde a classe Servidor está executando.

1 curtida

ok valeu vou tentar isso daqui a pouco

é em forma de string né?

Uai, achei que vc jah estaria colocando o IP da máquina onde o servidor estava rodando.

Isso, coloca em string mesmo.

consegui valeu no final era só colocar o ip mesmo

Massa! Depois marca a resposta do @staroski como solução.

1 curtida