Latest web development tutorials

Jaringan Java Programming

pemrograman jaringan berarti untuk menulis dijalankan pada beberapa perangkat Program (komputer), perangkat ini terhubung melalui jaringan.

java.net paket di J2SE API berisi kelas dan interface yang menyediakan rincian komunikasi tingkat rendah. Anda dapat menggunakan kelas-kelas dan interface untuk fokus pada pemecahan masalah, daripada fokus pada rincian komunikasi.

java.net paket menyediakan dukungan untuk dua protokol jaringan yang umum:

  • TCP: TCP adalah singkatan dari Transmission Control Protocol, yang menjamin komunikasi yang handal antara dua aplikasi. Umumnya digunakan untuk protokol Internet, yang disebut TCP / IP.
  • UDP: UDP adalah singkatan dari User Datagram Protocol, protokol connectionless. Menyediakan paket data yang akan dikirimkan antara data aplikasi.

Tutorial ini menjelaskan dua topik berikut.

  • Socket Programming: Ini adalah konsep jaringan yang paling banyak digunakan, telah dijelaskan secara rinci untuk
  • URL Pengolahan: Bab ini berbicara di ruang lain, klik di sini untuk mempelajari lebih lanjut tentang URL penanganan bahasa Jawa .

socket Programming

Soket menggunakan TCP menyediakan mekanisme komunikasi antara dua komputer. program klien menciptakan socket dan mencoba untuk terhubung ke server socket.

Ketika sambungan dibuat, server akan membuat objek Socket. Klien dan server sekarang dapat menulis dan membaca objek Socket untuk berkomunikasi.

kelas java.net.Socket mewakili socket, dan menyediakan kelas java.net.ServerSocket untuk mendengarkan program client server, dan membangun mekanisme untuk menghubungkan dengan mereka.

Hal ini terjadi ketika koneksi TCP menggunakan langkah-langkah berikut untuk membangun socket antara dua komputer:

  • Server ServerSocket instantiate sebuah objek yang mewakili port komunikasi pada server.
  • panggilan server kelas ServerSocket menerima metode (), yang akan menunggu sampai klien terhubung ke server pada port tertentu.
  • Ketika server menunggu klien untuk instantiate objek Socket, tentukan nama server dan nomor port untuk meminta sambungan.
  • kelas Socket konstruktor mencoba untuk menghubungkan klien ke server dan nomor port tertentu. Jika komunikasi didirikan, untuk membuat klien Socket objek dapat berkomunikasi dengan server.
  • Metode pada sisi server, menerima () mengembalikan referensi socket server baru dengan soket yang terhubung ke soket klien.

Setelah sambungan dibuat dengan menggunakan aliran I / O selama komunikasi. Setiap socket memiliki input dan aliran output stream. masukan klien keluaran aliran sungai ke server, input stream klien untuk output stream Server.

TCP merupakan protokol komunikasi dua arah, sehingga data dapat dikirim melalui dua aliran data pada saat yang sama. Berikut ini adalah kelas lengkap menyediakan beberapa metode yang berguna untuk mencapai soket.


metode kelas ServerSocket

Server aplikasi dengan menggunakan kelas java.net.ServerSocket untuk port dan mendengarkan permintaan klien.

kelas ServerSocket memiliki empat konstruktor:

Tidak. metode Deskripsi
1 ServerSocket public (int port) throws IOException
Buat mengikat ke port tertentu dari server socket.
2 ServerSocket public (port int, int backlog ) throws IOException
Dengan backlog ditentukan Membuat socket server dan mengikat ke nomor port lokal yang ditentukan.
3 ServerSocket public (port int, int backlog , InetAddress address) throws IOException
Menggunakan port tertentu, mendengarkan backlog, dan untuk mengikat ke alamat IP lokal server dibuat.
4 ServerSocket publik () throws IOException
Menciptakan socket server yang terikat.

Menciptakan socket server yang terikat. Jika metode ServerSocket konstruktor tidak membuang pengecualian, itu berarti bahwa aplikasi Anda telah berhasil terikat pada port tertentu, dan mendengarkan permintaan klien.

Berikut adalah beberapa kelas metode ServerSocket umum:

Tidak. metode Deskripsi
1 public int getLocalPort ()
Mengembalikan port yang socket ini adalah mendengarkan.
2 Socket publik menerima () throws IOException
Dia mendengarkan dan menerima socket ini.
3 public void setSoTimeout (int timeout)
Dengan menentukan nilai timeout untuk mengaktifkan / menonaktifkan SO_TIMEOUT, dalam milidetik.
4 public void mengikat (SocketAddress tuan rumah, int backlog)
Mengikat ServerSocket untuk alamat tertentu (alamat IP dan nomor port).

metode kelas Socket

nama kelas java.net.Socket dari klien dan server untuk berkomunikasi satu sama lain dalam soket. Untuk mendapatkan klien Socket objek dengan instantiating dan server untuk mendapatkan objek Socket dikembalikan oleh nilai metode menerima ().

kelas Socket memiliki lima konstruktor.

Tidak. metode Deskripsi
1 Socket publik (String tuan rumah, int pelabuhan ) throws UnknownHostException, IOException.
Menciptakan socket aliran dan menghubungkan ke nomor port yang ditentukan pada host tertentu.
2 Socket publik (InetAddress tuan rumah, int pelabuhan ) throws IOException
Menciptakan socket aliran dan menghubungkan ke alamat IP tertentu dari nomor port yang ditentukan.
3 Socket publik (String host, port int , InetAddress localaddress, int LocalPort) throws IOException.
Menciptakan socket dan menghubungkannya ke port remote ditentukan pada host remote ditentukan.
4 Socket publik (InetAddress host, port int , InetAddress localaddress, int LocalPort) throws IOException.
Menciptakan socket dan menghubungkannya ke port remote ditentukan pada alamat remote ditentukan.
5 Socket publik ()
Buat soket tidak berhubungan, jenis sistem default SocketImpl

Ketika konstruktor Socket kembali, dan tidak hanya instantiate objek Socket, itu benar-benar akan mencoba untuk menyambung ke server dan port tertentu.

Berikut adalah beberapa metode yang menarik, memperhatikan klien dan server memiliki objek Socket, terlepas dari klien atau server dapat memanggil metode ini.

Tidak. metode Deskripsi
1 public void terhubung (SocketAddress tuan rumah, int timeout) throws IOException
koneksi soket ini ke server, dan menentukan nilai timeout.
2 publik InetAddress getInetAddress ()
Alamat pengirim dari koneksi soket.
3 public int getPort ()
Pengembalian socket ini terhubung ke port remote.
4 public int getLocalPort ()
Pengembalian socket ini terikat ke port lokal.
5 publik SocketAddress getRemoteSocketAddress ()
Alamat pengirim dari endpoint soket ini terhubung, jika kembali tidak berhubungan null.
6 publik InputStream getInputStream () throws IOException
Mengembalikan input stream untuk socket ini.
7 publik OutputStream getOutputStream () throws IOException
Mengembalikan output stream untuk socket ini.
8 public void close () throws IOException
Menutup socket ini.

metode kelas InetAddress

Kelas ini merupakan alamat Internet Protocol (IP). Di bawah ini adalah berguna ketika metode pemrograman Socket:

Tidak. metode Deskripsi
1 statis InetAddress getByAddress (byte [] addr )
Dalam kasus yang diberikan alamat IP baku, kembali InetAddress objek.
2 statis InetAddress getByAddress (String tuan rumah, byte [] addr)
Menurut membuat nama host InetAddress dan alamat IP yang disediakan.
3 statis InetAddress getByName (String host)
Menentukan alamat IP dari host dalam kasus nama host yang diberikan.
4 String getHostAddress ()
Mengembalikan string alamat IP (tekstual presentasi).
5 String gethostname ()
Mendapat nama host untuk alamat IP ini.
6 statis InetAddress getLocalHost ()
Mengembalikan host lokal.
7 String toString ()
Mengkonversi alamat IP ini untuk String.

Socket contoh klien

Berikut GreetingClient adalah program klien yang terhubung melalui soket ke server dan mengirim permintaan, kemudian menunggu tanggapan.

// 文件名 GreetingClient.java

import java.net.*;
import java.io.*;
 
public class GreetingClient
{
   public static void main(String [] args)
   {
      String serverName = args[0];
      int port = Integer.parseInt(args[1]);
      try
      {
         System.out.println("Connecting to " + serverName
                             + " on port " + port);
         Socket client = new Socket(serverName, port);
         System.out.println("Just connected to "
                      + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out =
                       new DataOutputStream(outToServer);
 
         out.writeUTF("Hello from "
                      + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in =
                        new DataInputStream(inFromServer);
         System.out.println("Server says " + in.readUTF());
         client.close();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

Socket contoh server

mengikuti program GreetingServer adalah aplikasi server-side yang menggunakan Socket untuk mendengarkan pada port tertentu.

// 文件名 GreetingServer.java

import java.net.*;
import java.io.*;

public class GreetingServer extends Thread
{
   private ServerSocket serverSocket;
   
   public GreetingServer(int port) throws IOException
   {
      serverSocket = new ServerSocket(port);
      serverSocket.setSoTimeout(10000);
   }

   public void run()
   {
      while(true)
      {
         try
         {
            System.out.println("Waiting for client on port " +
            serverSocket.getLocalPort() + "...");
            Socket server = serverSocket.accept();
            System.out.println("Just connected to "
                  + server.getRemoteSocketAddress());
            DataInputStream in =
                  new DataInputStream(server.getInputStream());
            System.out.println(in.readUTF());
            DataOutputStream out =
                 new DataOutputStream(server.getOutputStream());
            out.writeUTF("Thank you for connecting to "
              + server.getLocalSocketAddress() + "\nGoodbye!");
            server.close();
         }catch(SocketTimeoutException s)
         {
            System.out.println("Socket timed out!");
            break;
         }catch(IOException e)
         {
            e.printStackTrace();
            break;
         }
      }
   }
   public static void main(String [] args)
   {
      int port = Integer.parseInt(args[0]);
      try
      {
         Thread t = new GreetingServer(port);
         t.start();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

Mengkompilasi kode java di atas, dan jalankan perintah berikut untuk memulai layanan, menggunakan nomor port adalah 6066:

$ java GreetingServer 6066
Waiting for client on port 6066...
Terbuka seperti klien berikut:
$ java GreetingClient localhost 6066
Connecting to localhost on port 6066
Just connected to localhost/127.0.0.1:6066
Server says Thank you for connecting to /127.0.0.1:6066
Goodbye!