estou aprendendo a fazer um chatzinho em Java, porém estou com algumas dúvidas, estou seguindo um exemplo de apostila, nele o autor usou entrada e saida via DOS (System.in e System.out.println), eu adaptei para swing porém acho que não esta certo (ainda não testei pois vim postar as duvidas)
A aplicação usa 2 classes executaveis (Servidor e Client), ai surge a primeira duvida: são programas separados ou crio duas classes dentro de um unico projeto?
segunda duvida: tem um erro no meu projeto de servidor
import java.net.*;
import java.util.Scanner;
import javax.swing.*;
public class Servidor {
public Servidor(){
try{
ServerSocket servidor = new ServerSocket(12345);
JOptionPane.showMessageDialog(null, "Porta Aberta");
Socket client = new servidor.accept(); //linha com erro: Servidor cannot be resolved to a type
JOptionPane.showMessageDialog(null, "nova conexao com" +
client.getInetAddress().getHostAddress());
Scanner scan = new Scanner(client.getInputStream());
while(scan.hasNextLine()){
JOptionPane.showMessageDialog(null, scan.nextLine());
}
scan.close();
servidor.close();
client.close();
} catch(Exception e){
JOptionPane.showMessageDialog(null, "Porta bloqueada");
}
}
public static void main(String []args){
Servidor server = new Servidor();
}
}
alguem poderia me ajudar nessa parte?
depois posto a parte do client
Bom, não cheguei a rodar, mas acho que o seu prob é aqui:
Socket client = new servidor.accept(); //linha com erro:
//Tente assim:
Socket client = servidor.accept(); //linha com erro:
//O seu objeto já foi instanciado logo acima, na linha:
ServerSocket servidor = new ServerSocket(12345);
estou aprendendo a fazer um chatzinho em Java, porém estou com algumas dúvidas, estou seguindo um exemplo de apostila, nele o autor usou entrada e saida via DOS (System.in e System.out.println), eu adaptei para swing porém acho que não esta certo (ainda não testei pois vim postar as duvidas)
A aplicação usa 2 classes executaveis (Servidor e Client), ai surge a primeira duvida: são programas separados ou crio duas classes dentro de um unico projeto?
segunda duvida: tem um erro no meu projeto de servidor
import java.net.*;
import java.util.Scanner;
import javax.swing.*;
public class Servidor {
public Servidor(){
try{
ServerSocket servidor = new ServerSocket(12345);
JOptionPane.showMessageDialog(null, "Porta Aberta");
Socket client = new servidor.accept(); //linha com erro: Servidor cannot be resolved to a type
JOptionPane.showMessageDialog(null, "nova conexao com" +
client.getInetAddress().getHostAddress());
Scanner scan = new Scanner(client.getInputStream());
while(scan.hasNextLine()){
JOptionPane.showMessageDialog(null, scan.nextLine());
}
scan.close();
servidor.close();
client.close();
} catch(Exception e){
JOptionPane.showMessageDialog(null, "Porta bloqueada");
}
}
public static void main(String []args){
Servidor server = new Servidor();
}
}
alguem poderia me ajudar nessa parte?
depois posto a parte do client
Agradeço desde já
Obrigado[/quote]
São duas aplicações diferentes, o servidor e o client.
bom galera terminei aqui, fiz o seguinte: adaptei o Client para conectar à minha maquina (usando meu IP);
porém ele não fica aguardando uma conexão, ele só abre aparece uma tela DOS e fecha (acaba a execução)
segue códigos:
Servidor:
import java.net.*;
import java.util.Scanner;
import javax.swing.*;
public class Servidor {
public Servidor(){
try{
ServerSocket servidor = new ServerSocket(12345);
JOptionPane.showMessageDialog(null, "Porta Aberta");
Socket client = servidor.accept();
JOptionPane.showMessageDialog(null, "nova conexao com" +
client.getInetAddress().getHostAddress());
Scanner scan = new Scanner(client.getInputStream());
while(scan.hasNextLine()){
JOptionPane.showMessageDialog(null, scan.nextLine());
}
scan.close();
servidor.close();
client.close();
} catch(Exception e){
JOptionPane.showMessageDialog(null, "Porta bloqueada");
}
}
public static void main(String []args){
Servidor server = new Servidor();
}
}
Client:
import javax.swing.*;
import java.io.PrintStream;
import java.net.*;
import java.util.Scanner;
public class Client {
public Client(){
try{
Socket client = new Socket("15.0.1.232", 12345);
JOptionPane.showMessageDialog(null, "Conexão aberta");
Scanner teclado = new Scanner(JOptionPane.showInputDialog("Mensagem:"));
while(teclado.hasNextLine()){
JOptionPane.showMessageDialog(null, teclado.nextLine());
}
teclado.close();
client.close();
} catch(Exception e){
JOptionPane.showMessageDialog(null, "Ocorreu um erro");
}//end exception
}// end method
public static void main(String []args){
Client cliente = new Client();
}
}
o que eu tenho que fazer pra conexão ficar em aberto?
Já ouviu falar em threads? Eu criei uma aplicação que executa no background uma escuta em sockets. Mas no seu caso vc tem q reestruturar diferente seu codigo.
por exemplo crie um metodo que retorna o socket para a classe main
e no main vc coloca socket.read();