Friday, December 2, 2011

Java і сокети

Приклад реалізації серверної частини:

import java.io.*;
import java.net.*;
public class Provider{
  ServerSocket providerSocket;
  Socket connection = null;
  ObjectOutputStream out;
  ObjectInputStream in;
  String message;
  Provider(){}
  void run()
  {
    try{
      //1. creating a server socket
      providerSocket = new ServerSocket(2004, 10);
      //2. Wait for connection
      System.out.println("Waiting for connection");
      connection = providerSocket.accept();
      System.out.println("Connection received from " + connection.getInetAddress().getHostName());
      //3. get Input and Output streams
      out = new ObjectOutputStream(connection.getOutputStream());
      out.flush();
      in = new ObjectInputStream(connection.getInputStream());
      sendMessage("Connection successful");
      //4. The two parts communicate via the input and output streams
      do{
        try{
          message = (String)in.readObject();
          System.out.println("client>" + message);
          if (message.equals("bye"))
            sendMessage("bye");
        }
        catch(ClassNotFoundException classnot){
          System.err.println("Data received in unknown format");
        }
      }while(!message.equals("bye"));
    }
    catch(IOException ioException){
      ioException.printStackTrace();
    }
    finally{

      //4: Closing connection
      try{
        in.close();
        out.close();
        providerSocket.close();
      }
      catch(IOException ioException){
        ioException.printStackTrace();
      }
    }
  }
  void sendMessage(String msg)
  {
    try{
      out.writeObject(msg);
      out.flush();
      System.out.println("server>" + msg);
    }
    catch(IOException ioException){
      ioException.printStackTrace();
    }
  }
  public static void main(String args[])
  {
    Provider server = new Provider();
    while(true){
      server.run();
    }
  }
}

Відповідно для нього приклад клієнтської частини:

import java.io.*;
import java.net.*;
public class Requester{
  Socket requestSocket;
  ObjectOutputStream out;
  ObjectInputStream in;
  String message;
  Requester(){}
  void run()
  {
    try{
      //1. creating a socket to connect to the server
      requestSocket = new Socket("localhost", 2004);
      System.out.println("Connected to localhost in port 2004");
      //2. get Input and Output streams
      out = new ObjectOutputStream(requestSocket.getOutputStream());
      out.flush();
      in = new ObjectInputStream(requestSocket.getInputStream());
      //3: Communicating with the server
      do{
        try{
          message = (String)in.readObject();
          System.out.println("server>" + message);
          sendMessage("Hi my server");
          message = "bye";
          sendMessage(message);
        }
        catch(ClassNotFoundException classNot){
          System.err.println("data received in unknown format");
        }
      }while(!message.equals("bye"));
    }
    catch(UnknownHostException unknownHost){
      System.err.println("You are trying to connect to an unknown host!");
    }
    catch(IOException ioException){
      ioException.printStackTrace();
    }
    finally{
      //4: Closing connection
      try{
        in.close();
        out.close();
        requestSocket.close();
      }
      catch(IOException ioException){
        ioException.printStackTrace();
      }
    }
  }
  void sendMessage(String msg)
  {
    try{
      out.writeObject(msg);
      out.flush();
      System.out.println("client>" + msg);
    }
    catch(IOException ioException){
      ioException.printStackTrace();
    }
  }
  public static void main(String args[])
  {
    Requester client = new Requester();
    client.run();
  }
}

No comments:

Post a Comment

 
 
Blogger Templates