1. Ikhtisar
Kelas soket adalah kelas dasar bagi Java untuk melakukan operasi TCP klien. Kelas ini sendiri menggunakan kode untuk berkomunikasi melalui tumpukan TCP lokal dari sistem operasi host. Metode kelas soket akan membuat dan menghancurkan koneksi dan mengatur berbagai opsi soket.
Kelas ServerSocket adalah kelas dasar bagi Java untuk melakukan operasi sisi server. Kelas ini berjalan di server dan mendengarkan koneksi TCP masuk. Setiap server soket mendengarkan port server. Ketika klien dari host jarak jauh mencoba untuk terhubung ke port ini, server terbangun dan mengembalikan objek soket normal yang mewakili soket antara kedua host.
2. Apa itu TCP?
TCP adalah protokol komunikasi transportasi berbasis stream berbasis stream yang berorientasi koneksi. Komunikasi TCP dibagi menjadi klien dan server, dan objek yang sesuai masing -masing adalah soket dan server.
Ketika komputer perlu terhubung ke komputer jarak jauh lain, protokol TCP memungkinkan mereka untuk membuat koneksi: tautan virtual untuk mengirim dan menerima data. Protokol TCP bertanggung jawab untuk mengumpulkan paket informasi dan mengirimkannya dalam urutan yang sesuai, dan kemudian mengembalikannya dengan benar setelah menerimanya di ujung penerima. Untuk memastikan bahwa paket data akurat selama transmisi, TCP menggunakan mekanisme transmisi ulang: ketika entitas komunikasi mengirimkan pesan ke entitas komunikasi lain, ia perlu menerima informasi konfirmasi entitas lain. Jika tidak ada informasi konfirmasi yang diterima, informasi yang dikirim sekarang akan dibenci lagi.
AKU AKU AKU. Komunikasi TCP
1. Konstruktor
Kelas soket mengimplementasikan soket klien, dan konstruktor dapat menentukan host dan port yang ingin Anda sambungkan. Host dapat ditentukan sebagai inetaddress atau string, dan port selalu ditentukan sebagai nilai int antara 0 dan 65535.
Soket s = soket baru ("127.0.0.1", 10001); // Buat soket stream dan sambungkan ke nomor port yang ditentukan pada host yang ditentukanKelas server mengimplementasikan soket server. Soket server menunggu permintaan untuk dilewati melalui jaringan, ia melakukan beberapa operasi berdasarkan permintaan dan kemudian mengembalikan hasilnya ke pemohon.
ServerSocket ss = server baru (10001); // Buat soket server terikat ke port tertentu
2. Contoh: Menyalin file TCP
Klien:
Kelas Publik ClientDemo {public static void main (string [] args) melempar unknownHostException, ioException {socket s = socket baru ("127.0.0.1", 10004); bufferedReader Buf = BufferedReader (FileReader new ("c: //users/adminator/new BufferedReader (filereader (" c: //users/adminator.adminor ("c:" c: //users/adminer ("c: //users/adminer (" c: //users/adminer (" line = null;/*printwriter out = printwriter baru (s.getoutputStream (), true); while ((line = buf.readline ())! = null) {out.println (line); } */Bufferedwriter out = BufferedWriter baru (outputStreamWriter baru (s.getoutputStream ())); while ((line = buf.readline ())! = null) {out.write (line); out.newline (); out.flush ();} s.shutdownoutput (); bufferedReader in = new bufferedReader (inputStreamReader baru (s.getInputStream ()); string str = in.readline (); System.out.println (str); s.close (); buf.close ();}}Sisi server:
Public Class ServerDemo {public static void main (string [] args) melempar ioException {serversocket ss = new serverersocket (10004); socket s = ss.accept (); bufferedReader in = new BufferedReader (new inputStreamReader (s.getinputStream ()); string = new -noLRWRITER = new inputStreamReader (s.getinputStream ()); FileWriter ("c: //users//administrator//desktop//2.txt"), true); while ((line = in.readline ())! = null) {buf.println (line); }*/BufferedWriter buf = BufferedWriter baru (FileWriter baru ("c: //users//administrator//desktop//2.txt")); while ((line = in.readline ())! = Null) {buf.write (line); buf.newline (); Buf.flush (Buf.flush (line); BUF.NEWLINE (); BUF.FLOUSH. Printwriter (s.getoutputStream (), true); out.println ("Transfer berhasil!"); Ss.close (); buf.close ();}}4. Aplikasi Socket saat menjelajah
Kita dapat menulis sisi server di Eclipse dan kemudian mengaksesnya menggunakan browser.
misalnya, kode sisi server adalah:
Public Class SocketServer {public static void main (String [] args) melempar ioException {serversocket server = New ServerSocket (11000); Socket client = server.accept (); Printwriter out = printwriter baru (client.getoutputStream (), true); out.println ("halo!"); server.close (); }}Kemudian buka IE Browser, masukkan http://192.168.1.120:11000/ Di alamat (192.168.1.120 adalah alamat IP lokal), dan hasilnya adalah
Dalam aplikasi normal, browser mengeluarkan permintaan ke server Tomacat untuk mendapatkan sumber daya seperti gambar halaman web. Tomca adalah perangkat lunak sisi server yang ditulis di Java.
Sekarang kami menulis sisi server sebagai:
Public Class SocketServer {public static void main (String [] args) melempar ioException {serversocket server = New ServerSocket (11000); Socket client = server.accept (); Printwriter out = printwriter baru (client.getoutputStream (), true); BufferedReader di = BufferedReader baru (inputStreamReader baru (client.getInputStream ())); Garis string = null; while ((line = in.readline ())! = null) system.out.println (line); out.println ("halo!"); server.close (); }}Kemudian, saat mengakses dengan browser, Anda dapat melihat bahwa data header permintaan yang dikirim oleh browser (klien) ke server adalah:
Dengan menggunakan prinsip-prinsip di atas, kita dapat menulis perangkat lunak peramban (klien) yang mirip dengan IE sendiri. Pertama, tambahkan sumber daya demo.html ke direktori instalasi Tomcat c: /apache-tomcat-7.0.62/webapps/myweb, dan kemudian tulis klien, kodenya adalah sebagai berikut:
Public Class ClientDemo {public static void main (string [] args) melempar unknownhostException, ioException {socket s = socket baru ("192.168.1.120", 8080); printwriter out = printwriter baru (s.getOutputStream (), true); // kirimkan ke server. Http/1.1 "); out.println (" terima:*/*"); out.println (" host: 192.168.1.120:11000");out.println("Connection: Keep-Alive "); // output baris kosong, langkah ini tidak diperlukan. InputStreamReader (s.getInputStream ())); string line = null; // kembalikan file respons server while ((line = in.readline ())! = Null) {System.out.println (line);} s.close ();} {Selanjutnya, mulailah Tomcat. Artinya, klik dua kali file startup.bat di c: /apache-tomcat-7.0.62/bin. Kemudian jalankan kode klien di atas, dan Anda dapat melihat data respons yang dikembalikan oleh Tomacat:
Meringkaskan
Di atas adalah contoh kode lengkap dari komunikasi TCP dalam artikel ini tentang pemrograman Java Network, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Dasar-Dasar Pemrograman Jaringan Java: Komunikasi Satu Jalan
Kode contoh untuk mengimplementasikan komunikasi soket dalam pemrograman multithreaded java
Penjelasan terperinci tentang Kode Model Konsumen Produsen Komunikasi Thread dan Mekanisme Wake-Up dari Java Multi-Threaded
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!