Pendahuluan Kelas Java Terkait
Datagramsocket
public class DatagramSocket extends Object
Kelas ini mewakili soket yang digunakan untuk mengirim dan menerima paket datagram.
Soket Datagram adalah titik pengiriman atau penerima layanan pengiriman paket. Setiap paket yang dikirim atau diterima pada soket datagram ditangani dan dialihkan secara terpisah. Beberapa paket yang dikirim dari satu mesin ke mesin lainnya dapat memilih rute yang berbeda atau mungkin tiba dalam pesanan yang berbeda.
Pengiriman siaran UDP selalu diaktifkan di datagramsocket. Untuk menerima paket siaran, DatagramSocket harus terikat pada alamat wildcard. Dalam beberapa implementasi, paket siaran juga dapat diterima ketika terikat pada alamat yang lebih spesifik.
Data dapat dikirim dan diterima melalui kirim dan menerima datagramsocket.
public void receive(DatagramPacket p) throws IOException
Terima paket datagram dari soket ini. Ketika metode ini kembali, buffer datagrampacket diisi dengan data yang diterima. Paket Datagram juga berisi alamat IP pengirim dan nomor port pada mesin pengirim.
Metode ini memblokir sampai datagram diterima. Bidang panjang objek paket datagram berisi panjang informasi yang diterima. Jika informasinya lebih panjang dari panjang paket, informasinya akan dipersingkat
Jika seorang manajer keamanan ada dan metode check -cepcept dari manajer keamanan tidak mengizinkan operasi menerima, paket tidak dapat diterima.
parameter:
P-The Datagrampacket untuk menempatkan data yang masuk.
Melemparkan:
IOException - Jika kesalahan I/O terjadi.
SocketTimeOutException - Jika setSoTimeout dipanggil sebelumnya dan nilai batas waktu telah kedaluwarsa.
PortunreachableException - Dapat melempar ketika soket terhubung ke target yang saat ini tidak terjangkau. Perhatikan bahwa tidak ada jaminan bahwa pengecualian akan dilemparkan.
IllegalBlockingModeException - Jika soket ini memiliki saluran terkait dan saluran dalam mode non -blocking.
public void send(DatagramPacket p) throws IOException
Kirim paket datagram dari soket ini. Datagrampacket berisi informasi yang menunjukkan: data yang akan dikirim, panjangnya, alamat IP host jarak jauh dan nomor port host jarak jauh
Jika ada manajer keamanan dan soket saat ini tidak terhubung ke alamat jarak jauh, metode ini terlebih dahulu melakukan beberapa pemeriksaan keamanan. Pertama, jika p.getAddress (). IsMulticastAddress () benar, metode ini memanggil metode checkmulticast manajer keamanan dengan p.getAddress () sebagai parameter. Jika nilai ekspresi salah, metode ini digunakan untuk menghubungi metode Cekneconnect Manajer Keamanan dengan p.getAddress (). GetHostAddress () dan p.getport () sebagai parameter. Jika operasi tidak diizinkan, setiap panggilan ke metode Manajer Keamanan akan menghasilkan Exception Keamanan.
parameter:
P-DATAGRAMPACKET akan dikirim.
Melemparkan:
IOException - Jika kesalahan I/O terjadi.
SecurityException - Jika Manajer Keamanan ada dan metode checkmulticast atau checkConnect tidak mengizinkan pengiriman.
PortunreachableException - Dapat melempar ketika soket terhubung ke target yang saat ini tidak terjangkau. Perhatikan bahwa tidak ada jaminan bahwa pengecualian akan dilemparkan.
IllegalBlockingModeException - Jika soket ini memiliki saluran terkait dan saluran dalam mode non -blocking.
Datagrampacket
public final class DatagramPacket extends Object
Jenis ini mewakili paket Datagram UDP, yang digunakan untuk mengimplementasikan layanan pengiriman paket tanpa koneksi
Metode Konstruksi:
DatagramPacket(byte[]buf,intlength)
Bangun datagrampacket untuk menerima paket data panjangnya
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
Bangun paket datagram untuk mengirim paket panjang ke nomor port yang ditentukan pada host yang ditentukan
Contoh sistem obrolan grup UDP
UDP terhubung tanpa koneksi. Obrolan grup adalah untuk mengirim data ke alamat penyiaran (alamat penyiaran), sehingga semua orang akan menerima pesan; Menggunakan metode utas, mulai utas pengirim dan utas penerima, pengirim membaca input keyboard sebagai output, penerima membaca informasi input dan menampilkannya.
Pengirim
Udpsender.java
Paket cn.xidian.socket; impor java.io.bufferedreader; impor java.io.ioException; impor java.io.inputStreamReader; import java.net.datagrampacket; impor java.net.datagramsocket; impor java.net.inetads run() {try {//Create UDP service DatagramSocket socket = new DatagramSocket();//Prepare the data packet to send//Read the input from the system input BufferedReader in = new BufferedReader(new InputStreamReader(System.in)) ;String line = null;while((line = in.readLine()) != null){//I did the test and wrote the alamat lokal. Obrolan grup perlu menulis alamat siaran, misalnya: 192.168.137.255DataGrampacket data = datagrampacket baru (line.getbytes (), line.getbytes (). Length, inetaddress.getbyname ("127.0.0.1"), 9090);//kirim data ("Data (" 127.0.0.1 "), 9090); socketsocket.close ();} catch (ioException e) {e.printstacktrace ();}}}Penerima
Udpreceiver.java
package cn.xidian.socket;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class UdpReceiver extends Thread {@Override public void run() {try {//Create UDP service and listen to port DatagramSocket socket = new Datagramsocket (9090); // Terima paket data byte [] temp = byte baru [1024]; data datagrampacket = datagrampacket baru (temp, temp.length); boolean flag = true; flag) {socket.receive (data);/output informasi pengirim terkait pengirim terkait dengan pengirim terkait dengan pengirim terkait pengirim terkait dari pengirim terkait dari pengirim terkait dengan pengirim terkait pengirim terkait dari pengirim terkait dari pengirim terkait dari pengirim terkait dari pengirim terkait Pengirim Terkait data.getAddress (). getHostAddress (); String senderhostname = data.getAddress (). getHostName (); System.out.println (senderhostname+"("+senderaddress+")" "mengatakan:"+new string (TEMP, 0, data.getlength ())) "); mengatakan:"+New String (TEMP, 0, Data.getlength ())) "); mengatakan:"+New String (TEMP, 0, Data.getlength ())) "); kata: (IoException e) {E.PrintStackTrace ();}}}Metode utama
Udpmain.java
Paket cn.xidian.socket; kelas publik udpmain {public static void main (string [] args) {// mulai udpreceiver thread udpreceiver receiver = new udpreceiver (); receiver.start (); // start udpsender udprecender sender = uDpsender baru (););Hasil tes
Pihak input membaca input keyboard sebagai output, penerima menerima pesan dan menampilkan IP pengirim dan nama host.
Meringkaskan
Di atas adalah semua konten dari artikel ini tentang pemrograman Java menggunakan UDP untuk membangun contoh kode sistem obrolan grup. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!