Pages

Jumat, 11 Mei 2012

Belajar Java : Contoh Server Socket Sederhana

Contoh ini mengenalkan pemrograman soscket dengan Java. Server mendengar (listen) koneksi yang masuk. Ketika suatu koneksi terbangun, client dapat mengirimkan data. Pada kode di bawah ini, client mengirimkan pesan “Hi my server”. Client mengirimkan pesan khusus “bye” untuk menghentikan koneksi dari server. Kemudian server mengirimkan pesan “bye” juga. Terakhir, koneksi diakhiri dan server menunggu koneksi berikutnya. Dua program ini dapat dijalankan pada mesin yang sama. Jika dijalankan pada mesin berbeda, cukup ubah alamat “localhost” dengan suatu IP adress dari mesin di mana server dijalankan.
Server
<pre>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();
  }
 }
}
</pre>
<pre>
Client
<pre>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();
 }
}
</pre>
<pre>
sumber : komputasi.wordpress.com

0 komentar:

Posting Komentar