Multi Thread Socket em Java
por Anônimo
Aqui ensino como fazer uma comunicação entre um cliente e um servidor utilizando sockets em Java, o código esta bem comentado, espero que ajude ! =]
Lembrando que para rodar o programa, vá no prompt , localize a pasta onde esta o servidor.java e o cliente.java, então faça o comando:
javac servidor.java
depois
java cliente.java
para testar, em uma janela do prompt você digita:
java servidor
em outra janela, voce digita:
java cliente
então no cliente você colocaria :
11111111111111 (por exemplo)
ao abrir outra janela, coloque:
22222222222222 (por exemplo)
no servidor você verá que fica alternando entre 1111111111 e 222222222222, e assim vai,rs.
Bem eh isso galera, um forte abraço.
import java.net.*;
import java.io.*;
/**
*
* @author Valter
*/
public class Servidor implements Runnable {
ServerSocket ss;
public Servidor(int porta) throws Exception {
// informando em qual porta o servidor estará ouvindo
ss = new ServerSocket(porta);
// criando uma nova thread e já estou inicializando ela
new Thread(this).start();
// mensagem iniicial
System.out.println("Servidor ouvindo na porta:" + porta);
}
public void run() {
try {
while (true) {
// aceitando a conexão com o cliente e inicializando a outra thread
new TrataCliente(ss.accept()).start();
System.out.println("Mais um cliente atendido!");
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public static void main(String[] args) {
try {
new Servidor(1024);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
class TrataCliente extends Thread {
private Socket client;
public TrataCliente(Socket s) {
client = s;
}
public void run() {
try {
// aqui vai a sua comunicacao com o cliente
ObjectInputStream oi = new ObjectInputStream(client.getInputStream());
// exibindo na tela o que recebemos do nosso cliente
System.out.println("Chegou isso:" + oi.readObject());
client.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
O nosso cliente
import java.net.*;
import java.io.*;
/**
*
* @author Valter
*/
public class Cliente extends Thread {
// aqui no nosso caso será o 'localhost' que o ip da própria maquina aonde você executará
private String server;
// neste caso utilizaremos a partir da porta 1024, sendo que menor são para o Sistema Operacional
private int porta;
// aqui será a nossa string que será enviada para o servidor e ficará repetindo diversas vezes
private String texto;
public Cliente(String server, int porta) {
try{
// preparando o buffer para ler a stream (no caso o teclado)
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
// estamos lendo a stream que esta vindo do usuário
texto = inFromUser.readLine();
}catch(Exception e){
e.printStackTrace();
}
this.server = server;
this.porta = porta;
}
public static void main(String[] args) {
try {
// inicializando quem será nosso servidor (nossa máquina)
String server = "localhost";
// o numero da porta
int porta = 1024;
// o numero máx de clientes que podem ser atendidos, mais que isso começaremos a ter muitas exceções
int numeroDeClientes = 10;
for (int i = 0; i < numeroDeClientes; i++) {
// criando um novo cliente para nosso servidor
new Cliente(server, porta).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
try {
while (true) {
// abrindo uma porta para fazermos a comunicação entre nosso cliente e nosso servidor
Socket s = new Socket(server, porta);
// instaciando para enviarmos ao nosso servidor o que digitamos no cliente
ObjectOutputStream oo = new ObjectOutputStream(s.getOutputStream());
// informando aonde estamos conectados
System.out.println("Conectado a " + server + ":" + porta);
// enviando ao nosso servidor a nossa string
oo.writeObject(texto);
//fechando a nossa conexão
s.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Lembrando que para rodar o programa, vá no prompt , localize a pasta onde esta o servidor.java e o cliente.java, então faça o comando:
javac servidor.java
depois
java cliente.java
para testar, em uma janela do prompt você digita:
java servidor
em outra janela, voce digita:
java cliente
então no cliente você colocaria :
11111111111111 (por exemplo)
ao abrir outra janela, coloque:
22222222222222 (por exemplo)
no servidor você verá que fica alternando entre 1111111111 e 222222222222, e assim vai,rs.
Bem eh isso galera, um forte abraço.
Quem sou eu
Blog Archive
-
▼
2011
(98)
-
▼
outubro
(13)
- Dica GMail : Como visualizar seus e-mail não lidos...
- Adicione abas as suas pastas do Explorer
- Visualizar seu site em diferentes tipos de telas
- Se esse vídeo não te fizer se interessar por físic...
- Como compartilhar mídias entre PC com o Xbox 360
- Estudantes desenvolvem aplicativo de tablet para c...
- Estátua do Ice Cream Sandwich chega ao complexo do...
- Google Translate com modo de conversação
- Multi Thread Socket em Java
- Em memória, Steve Jobs.
- Aos 29 anos ouvindo a própria voz pela primeira vez
- Firefox 7: mais rápido e menos consumo de memória
- Programação do SESC Sorocaba–Outubro 2011
-
▼
outubro
(13)

20 de novembro de 2012 às 19:30
Opa, colega seu código ficou muito bom
Muito bem documentado... Parabéns!!
Muito Obrigado!!