Sockets - exemplo mais simples possível

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