Oi, pessoal! sou iniciante em Java e Preciso criar uma Classe cliente e outra Classe servidor utilizando Sokets. Já fiz uma boa parte, mas não está funcionando legal
Não sei se devo criar uma main à parte. Ou deixar como está. Estou colocando junto os códigos para poderem me ajudar. Desde já agradeço À atenção.
Parte I
Classe Cliente, realizar conexão via Sockets com uma máquina remota. Objetos dessa classe devem responder aos seguintes métodos:
*void conecta(String maquina, int porta) que tenta criar uma conexão remota com a máquina na porta dada. Caso consiga, deve criar também fluxos de entrada e saída para comunicação com a maquina. O fluxo de entrada deve utilizar a classe BufferedReader ao invés da DataInputStream.
*void desconecta(String maquina, int porta) que fecha uma conexão remota com a máquina na porta dada.
*void envia(String dado) que envia uma string usando o fluxo de saída
*String recebe() que recebe uma string usando o fluxo de entrada
Parte II
Classe chamada Servidor, aceitar uma conexão via Sockets com uma máquina remota. Objetos dessa classe devem responder aos seguintes métodos:
*void inicia(int porta) criar os sockets necessários para um servidor na porta fornecida.
*void emEspera() deve esperar por uma conexão na porta criada por inicia e, quando houver uma conexão, deve criar fluxos de entrada e saída para comunicação com o cliente. O fluxo de entrada deve utilizar a classe BufferedReader ao invés da DataInputStream.
*void termina(int porta) fecha todos os sockets e fluxos associados à porta.
classe Cliente******
import java.io.*; // classes para input e output streams
import java.net.*; // classes para socket, serversocket e clientsocket
class Cliente
{ String maq;
int por;
public static void main(String args[])
{
// cria o stream do teclado**************************************************
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Digite o nome da máquina: ");
maq = in.readLine();
System.out.println("Digite a porta da máquina: ");
por = Integer.parseInt(in.readLine());
if (maq != "bye")
{
conecta(maq, por);
}
else
{
desconecta(maq, por);
}
}
catch (IOException e)
{
System.out.println("Houve um erro na entrada de dados");
}
//***************************************************************************
}
//Cria o ponto de tranporte e conecta ao servidor********************************
public void conecta(String maquina, int porta)
{
String d;
try
{
Socket socket = new Socket(maquina, porta);
envia(d);
}
catch(IOException e)
{
System.out.println(e.getMessage());
return;
}
}
//*******************************************************************************
//Encerra o ponto de tranporte e desconecta do servidor**************************
public void desconecta(String maquina, int porta)
{
try
{
Socket socket = new Socket(maquina, porta);
socket.close();
}
catch(IOException e)
{
System.out.println(e.getMessage());
return;
}
}
//*******************************************************************************
//Envia dados********************************************************************
public void envia(String dados)
{
Socket socket;
try
{ if (dados != "bye")
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// cria os streams (encadeamentos) de entrada e saida com o servidor
DataOutputStream paraServer = new DataOutputStream(socket.getOutputStream());
BufferedReader deServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// le uma linha do teclado e coloca em sentence
dados = in.readLine();
// envia a linha para o server
paraServer.writeBytes(dados + '\n');
}
else
{
desconecta(maq, por);
}
}
catch(IOException e)
{
System.out.println(e.getMessage());
return;
}
}
//**************************************************
}
Classe Servidor******
import java.io.*; // classes para input e output streams
import java.net.*; // classes para socket, serversocket e clientsocket
class Servidor
{
public static void main(String args[])throws Exception
{
String dadoCliente;
int por;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Digite a porta da máquina: ");
por = Integer.parseInt(in.readLine());
inicia(por);
emEspera(inicia(por));
termina(por);
}
// cria socket de comunicação com os clientes na porta*************************
public static void inicia(int porta)
{
try
{
ServerSocket Ssocket= new ServerSocket(porta);
}
catch(IOException e)
{
System.out.println(e.getMessage());
return;
}
}
//*****************************************************************************
public static void emEspera()
{
try
{
// espera msg de algum cliente e trata
while(true)
{
// espera conexão de algum cliente
Socket conexaoSocket = Ssocket.accept();
//Cria streams de entrada e saida com o cliente que chegou***************
BufferedReader entradaCliente = new BufferedReader(new InputStreamReader(conexaoSocket.getInputStream()));
DataOutputStream saidaPCliente = new DataOutputStream(conexaoSocket.getOutputStream());
}
}
catch(IOException e)
{
System.out.println(e.getMessage());
return;
}
}
public static void termina(int porta)
{
try{
//Encerro o socket de comunicação
porta.close();
//Encerro o ServerSocket
Ssocket.close();
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
************************************************************
[b][size=“12”]
[color=“red”]
- Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size][/b] :joia: