Server
// ----------------------- server socket
import java.io.*;
import java.net.*;
public class Comunica2 {
public void go() {
try {
ServerSocket ss = new ServerSocket(4242); // 4242 = porta
// vamos repetir o codigo abaixo infinitamente
while (true) {
Socket socket = ss.accept(); // tem alguem falando com o server?
PrintWriter writer = new PrintWriter(socket.getOutputStream()); // cria entao um fluxo para leitura
String msg = "Mensagem do servidor";
System.out.println("Enviei mensagem");
writer.println(msg); // manda mensagem pro client
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Comunica2().go();
}
}
Client
// ----------------------- client socket
import java.io.*;
import java.net.*;
public class Comunica1 {
public void go() {
try {
// cria o comunicador client (socket)
Socket s = new Socket("127.0.0.1", 4242);
// monta o fluxo de entrada
InputStreamReader sr = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(sr);
// le do servidor
String msg = reader.readLine();
System.out.println(msg);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Comunica1().go();
}
}
Para testar
Abra 2 prompts e faça os comandos (um em cada)
java Comunica2
java Comunica1