Chat usando Sockets

Bom dia galerinha

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

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);

[]´s

[quote=Bina0]Bom dia galerinha

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.

Socket client = servidor.accept();

so tira o new ali da frente e testa.

[]'s

[quote=Felagund]

São duas aplicações diferentes, o servidor e o client.

Socket client = servidor.accept();

so tira o new ali da frente e testa.

[]'s[/quote]
Opaaa 100%, obrigado mesmo amigo :smiley:
obrigado ao Yorgan também
vou continuar o projeto e qualquer coisa dou um Up
Obrigadooo

Edit: as alterações para Swing (JOptionPane) estão corretas?

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();

algo assim tem q fazer.