package com.sevidor;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.DataInputStream;
import java.io.Flushable;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
/**
*
*
*/
public class Servidor extends JFrame {
private static boolean executando = true ;
private static String mensagem;
private static final int PORTA = 1234;
public static String ip ;
public static int porta;
private static JTextArea status = new JTextArea();
public Servidor () {
// Define o t�tulo da janela
super ("FastRequest Servidor - BETA");
// TODO: handle exception
this.montaJanela ();
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //fecha aplica��o quando clica no botao fechar do JFrame
this.setLocationRelativeTo(null);//centraliza o form
this.setBackground(Color.GRAY);
//Image img = Toolkit.getDefaultToolkit().getImage("servericone.png");
//etIconImage( img );
//ImageIcon icon = getIcon("servericone.png");
String plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
try {
UIManager.setLookAndFeel(plaf);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
SwingUtilities.updateComponentTreeUI(this);
}
private void montaJanela ()
{
this.getContentPane ().add (status);
}
public static void main(String[] args) {
Servidor janela = new Servidor();
janela.setSize (500, 180);
//janela.setUndecorated(true);
ImageIcon icone = new ImageIcon("E:\\ServidorJava\\Imagens\\servericone.png");
janela.setIconImage(icone.getImage());
janela.setVisible (true);
try {
ServerSocket server = new ServerSocket(1234);
InetAddress addr = InetAddress.getLocalHost();
System.out.println("----------- SERVIDOR CONECTADO "
+ addr.getHostAddress() + " PORTA " + PORTA
+ " -----------");
displayMessage("----------- SERVIDOR CONECTADO "
+ addr.getHostAddress() + " PORTA " + PORTA
+ " -----------");
//JOptionPane.showMessageDialog(null, "Servidor conectado IP :"+addr.getHostAddress()+" Porta :"+PORTA);
System.out.println("Esperando Conexoes.");
displayMessage("\nEsperando Conexoes.");
Socket socket = server.accept();
System.out.println("Sevidor-> Conectou Ip "
+ socket.getInetAddress().getHostAddress());
displayMessage("\nSevidor-> Conectou Ip "
+ socket.getInetAddress().getHostAddress());
DataInputStream in = new DataInputStream(socket.getInputStream());
try {
while (executando) {
executando=true;
int i = 1;
i++;
mensagem = in.readUTF();
String login[] = new String[2];
login = mensagem.split("#");
System.out.println("Servidor-> Recebeu Nome : "
+login[0] );
displayMessage("\nServidor -> Recebeu Nome : "+login[0]);
System.out.println("Servidor-> Recebeu Mesa : "
+ login[1] );
displayMessage("\nServidor -> Recebeu Mesa : "+login[1]);
System.out.println("Servidor -> Recebeu Pedido :"
+ login[2]);
displayMessage("\nServidor -> Recebeu Pedido : "+login[2]);
displayMessage("\nServidor ------> Pedido Finalizado ");
displayMessage(" ");
}
System.out.println("Servidor-> Finalizado.");
displayMessage("\nServidor-> Finalizado.");
in.close();
socket.close();
server.close();
} catch (Exception e) {
System.err.println("Servidor-> Erro: " + e.getMessage());
executando = false;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static void displayMessage(final String texto) {
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
status.append(texto);
}
}
);
}
}
Ajuda , transformar essa classe Servidor Socket em multi-thread
5 Respostas
Amigo, o que você tem que fazer é disparar uma thread para cada conexão realizada com um cliente diferente. Assim você pode criar uma classe que irá representar uma thread onde você pode guardar as informações de cada cliente. Aqui no fórum existe várias tópicos relacionados ao assunto, pode dar uma olhada nesse aqui e ver se ajuda:
no github tb tem várias implementaçoes simples de servidores http com thread
abrasss
Então cara , li seu exemplo , testei e funcionou , mas fui implementar no meu, não deu certo , como faria isso exatamente ? Obrigado pela ajuda !
Opa, tudo bom?
O que que “não funcionou”, cara? Foi lançada alguma exceção? Poste aí o erro pra gente ver 
Vou explicar do começo pra nao me perder , kk, a minha aplicação é o seguinte , realizar pedido via celular , a pessoa entra com o nome com a mesa e o pedido e manda pro servidor …eu tentei conectar com o emulador e com o celular comum …não da , ele nao aparece que conectou dois ips…acho que nao consegui intender.