Java -da tarmoq ilovasini qanday yaratish kerak (rasmlar bilan)

Mundarija:

Java -da tarmoq ilovasini qanday yaratish kerak (rasmlar bilan)
Java -da tarmoq ilovasini qanday yaratish kerak (rasmlar bilan)

Video: Java -da tarmoq ilovasini qanday yaratish kerak (rasmlar bilan)

Video: Java -da tarmoq ilovasini qanday yaratish kerak (rasmlar bilan)
Video: Google play marketdan apk yuklash kompyuter orqali. Siz bilasizmi?. 2024, Aprel
Anonim

Ma'lum bir qurilmada bajariladigan kodni yozish juda qoniqarli. Ammo, bir-birlari bilan aloqa o'rnatadigan bir nechta qurilmalarda bajariladigan kodni yozish hayotni tasdiqlaydi. Ushbu maqola sizga uzatishni boshqarish protokoli (TCP) yordamida tarmoq orqali qanday ulanish va xabar almashishni o'rgatadi.

Ushbu maqolada, siz kompyuterni o'ziga bog'laydigan va uni aqldan ozdiradigan - o'zi bilan gaplashadigan dasturni o'rnatasiz. Shuningdek, siz Java -da tarmoq yaratish uchun eng ko'p ishlatiladigan ikkita oqim o'rtasidagi farqni va ularning qanday ishlashini bilib olasiz.

Ma'lumotlar va ob'ektlar oqimi

Kodga kirishdan oldin, maqolada ishlatiladigan ikkita oqim o'rtasidagi farqni ajratib ko'rsatish kerak.

Ma'lumot oqimlari

Ma'lumot oqimlari ibtidoiy ma'lumotlar turlari va satrlarini qayta ishlaydi. Ma'lumot oqimlari orqali yuboriladigan ma'lumotlarni qo'lda ketma -ketlashtirish va ketma -ketlashtirish kerak, bu esa murakkab ma'lumotlarni uzatishni qiyinlashtiradi. Ammo ma'lumotlar oqimi Java -dan boshqa tillarda yozilgan serverlar va mijozlar bilan aloqa o'rnatishi mumkin. Xom -ashyo bu jihatdan ma'lumotlar oqimiga o'xshaydi, lekin ma'lumotlar oqimi ma'lumotlarning platformada mustaqil ravishda formatlanishini ta'minlaydi, bu foydali, chunki ikkala tomon ham yuborilgan ma'lumotlarni o'qiy oladi.

Ob'ekt oqimlari

Ob'ekt oqimlari boshlang'ich ma'lumotlar turlarini va amalga oshiradigan ob'ektlarni qayta ishlaydi

Seriyali

interfeys. Ob'ektlar oqimi orqali yuboriladigan ma'lumotlar avtomatik ravishda ketma -ket va ketma -ketlashtiriladi, bu esa murakkab ma'lumotlarni uzatishni osonlashtiradi. Ammo, ob'ektlar oqimi faqat Java -da yozilgan serverlar va mijozlar bilan aloqa o'rnatishi mumkin. Shuningdek,

ObjectOutputStream

ishga tushirilgandan so'ng, ga sarlavha yuboradi

InputStream

boshlanganda sarlavha olinmaguncha bajarilishini bloklaydigan boshqa tomon.

Qadamlar

Java Step1 -da tarmoq ilovasini yarating
Java Step1 -da tarmoq ilovasini yarating

Qadam 1. Sinf yarating

Sinf yarating va xohlaganingizcha nom bering. Ushbu maqolada unga nom beriladi

NetworkAppExample

ochiq sinf NetworkAppExample {}

Java -da Step2 -da tarmoq ilovasini yarating
Java -da Step2 -da tarmoq ilovasini yarating

2 -qadam. Asosiy usulni yarating

Asosiy usulni yarating va istisnolardan voz kechishi mumkinligini e'lon qiling

Istisno

turi va uning har qanday kichik klassi - barcha istisnolar. Bu yomon amaliyot deb hisoblanadi, lekin yalang'och misollar uchun qabul qilinadi.

umumiy toifadagi NetworkAppExample {public static void main (String args) istisno qiladi {}}

Java Step3 -da tarmoq ilovasini yarating
Java Step3 -da tarmoq ilovasini yarating

Qadam 3. Server manzilini e'lon qiling

Bu misolda mahalliy xost manzili va ixtiyoriy port raqami ishlatiladi. Port raqami 0 dan 65535 gacha bo'lishi kerak. Biroq, oldini olish uchun port raqamlari 0 dan 1023 gacha (shu jumladan) oralig'ida, chunki ular tizim portlari himoyalangan.

public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; }}

Java Step4 -da tarmoq ilovasini yarating
Java Step4 -da tarmoq ilovasini yarating

Qadam 4. Server yaratish

Server manzil va portga bog'langan va kiruvchi ulanishlarni tinglaydi. Java -da,

ServerSocket

server tomonining so'nggi nuqtasini ifodalaydi va uning vazifasi yangi ulanishlarni qabul qilishdir.

ServerSocket

Ma'lumotni o'qish va yuborish uchun oqim yo'q, chunki u server va mijoz o'rtasidagi aloqani anglatmaydi.

java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); }}

Java Step5 -da tarmoq ilovasini yarating
Java Step5 -da tarmoq ilovasini yarating

5 -qadam. Log serverining ishga tushishi

Jurnalga kirish uchun server ishga tushirilgan konsolda chop eting.

java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); }}

Java -da Step6 -da tarmoq ilovasini yarating
Java -da Step6 -da tarmoq ilovasini yarating

Qadam 6. Mijoz yarating

Mijoz server manzili va portiga bog'langan va ulanish o'rnatilgandan so'ng paketlarni (xabarlarni) tinglaydi. Java -da,

Soket

serverga ulangan mijoz tomonining oxirgi nuqtasini yoki mijozga ulanishni (serverdan) ifodalaydi va boshqa tomondan tomon bilan aloqa qilish uchun ishlatiladi.

java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); }}

Java Step7 -da tarmoq ilovasini yarating
Java Step7 -da tarmoq ilovasini yarating

Qadam 7. Jurnalga ulanishga urinish

Jurnalga kirish uchun ulanishga urinilganligini konsolga chop eting.

java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); }}

Java Step8 -da tarmoq ilovasini yarating
Java Step8 -da tarmoq ilovasini yarating

8 -qadam. Aloqani o'rnating

Mijozlar hech qachon ulanmaydi, agar server tinglamasa va qabul qilmasa, boshqacha aytganda, ulanish o'rnatilmasa. Java -da ulanishlar yordamida o'rnatiladi

qabul ()

usuli

ServerSocket

sinf Usul mijoz ulanmaguncha bajarilishini bloklaydi.

java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); }}

Java Step9 -da tarmoq ilovasini yarating
Java Step9 -da tarmoq ilovasini yarating

Qadam 9. O'rnatilgan aloqani qayd eting

Jurnalga kirish uchun server va mijoz o'rtasida aloqa o'rnatilganligini konsolga chop eting.

java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); }}

Java Step10 -da tarmoq ilovasini yarating
Java Step10 -da tarmoq ilovasini yarating

10 -qadam. Aloqa oqimlarini tayyorlang

Aloqa oqimlar orqali amalga oshiriladi va ushbu dasturda serverdan (mijozdan) va mijozdan (mijozdan) xom oqimlar ham ma'lumotlarga, ham ob'ektlar oqimiga bog'lanishi kerak. Esda tutingki, har ikki tomon ham bir xil oqim turidan foydalanishi kerak.

  • Ma'lumot oqimlari

    java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); DataOutputStream clientOut = yangi DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = yangi DataInputStream (client.getInputStream ()); DataOutputStream serverOut = yangi DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = yangi DataInputStream (connection.getInputStream ()); }}

  • Ob'ekt oqimlari

    Bir nechta ob'ekt oqimlari ishlatilganda, kirish oqimlarini chiqish oqimlari bilan bir xil tartibda boshlash kerak, chunki

    ObjectOutputStream

    boshqa tomonga sarlavha yuboradi va

    ObjectInputStream

    sarlavha o'qilmaguncha bajarishni bloklaydi.

    java.io. ObjectInputStream -ni import qilish; java.io. ObjectOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); }}

    Yuqoridagi kodda ko'rsatilgan tartibni eslab qolish osonroq bo'lishi mumkin - birinchi navbatda chiqish oqimlarini, so'ngra kirish oqimlarini xuddi shu tartibda ishga tushiring. Biroq, ob'ekt oqimlarini ishga tushirishning yana bir tartibi quyidagicha:

    ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ());

Java Step11 -da tarmoq ilovasini yarating
Java Step11 -da tarmoq ilovasini yarating

11 -qadam. Aloqa tayyor ekanligini qayd eting

Jurnalga kirish uchun konsolga aloqa tayyor ekanligini chop eting.

// java.net. InetAddress -ga import kiritilmagan; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); // kod qoldirildi System.out.println ("Aloqa tayyor."); }}

Java -da Step12 -da tarmoq ilovasini yarating
Java -da Step12 -da tarmoq ilovasini yarating

12 -qadam. Xabar yarating

Ushbu ilovada,

Salom Dunyo

matn serverga ham yuboriladi

bayt

yoki

Ip

. Amaldagi oqimga bog'liq bo'lgan turdagi o'zgaruvchini e'lon qiling. Foydalanish

bayt

ma'lumotlar oqimi uchun va

Ip

ob'ekt oqimlari uchun.

  • Ma'lumot oqimlari

    Ma'lumot oqimlaridan foydalanib, ketma -ketlashtirish ob'ektlarni ibtidoiy ma'lumotlar turiga aylantirish orqali amalga oshiriladi

    Ip

    . Ushbu holatda,

    Ip

    ga aylantiriladi

    bayt

    yordamida yozish o'rniga

    writeBytes ()

    rasm yoki boshqa fayllar kabi boshqa ob'ektlar bilan qanday ishlashini ko'rsatish usuli.

    java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); DataOutputStream clientOut = yangi DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = yangi DataInputStream (client.getInputStream ()); DataOutputStream serverOut = yangi DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = yangi DataInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); bayt messageOut = "Salom dunyo".getBytes (); }}

  • Ob'ekt oqimlari

    java.io. ObjectInputStream -ni import qilish; java.io. ObjectOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); String messageOut = "Salom dunyo"; }}

Java Step13 -da tarmoq ilovasini yarating
Java Step13 -da tarmoq ilovasini yarating

13 -qadam Xabarni yuboring

Ma'lumotlarning to'liq yozilganligiga ishonch hosil qilish uchun chiqish oqimiga ma'lumotlarni yozing va oqimni yuving.

  • Ma'lumot oqimlari

    Xabarning uzunligini birinchi bo'lib yuborish kerak, shuning uchun boshqa tomon qancha bayt o'qish kerakligini biladi. Uzunlik ibtidoiy tamsayı turi sifatida yuborilgandan so'ng, baytlarni yuborish mumkin.

    java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); DataOutputStream clientOut = yangi DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = yangi DataInputStream (client.getInputStream ()); DataOutputStream serverOut = yangi DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = yangi DataInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); bayt messageOut = "Salom dunyo".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); }}

  • Ob'ekt oqimlari

    java.io. ObjectInputStream -ni import qilish; java.io. ObjectOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Istisno {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); String messageOut = "Salom dunyo"; clientOut.writeObject (messageOut); clientOut.flush (); }}

Java Step14 -da tarmoq ilovasini yarating
Java Step14 -da tarmoq ilovasini yarating

14 -qadam. Yuborilgan xabarni kiriting

Jurnalga kirish uchun, xabar yuborilgan konsolga chop eting.

  • Ma'lumot oqimlari

    java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); DataOutputStream clientOut = yangi DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = yangi DataInputStream (client.getInputStream ()); DataOutputStream serverOut = yangi DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = yangi DataInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); bayt messageOut = "Salom dunyo".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); System.out.println ("Xabar serverga yuborildi:" + yangi String (messageOut)); }}

  • Ob'ekt oqimlari

    java.io. ObjectInputStream -ni import qilish; java.io. ObjectOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); String messageOut = "Salom dunyo"; clientOut.writeObject (messageOut); clientOut.flush (); System.out.println ("Xabar serverga yuborildi:" + messageOut); }}

Java Step15 -da tarmoq ilovasini yarating
Java Step15 -da tarmoq ilovasini yarating

15 -qadam Xabarni o'qing

Kirish oqimidan ma'lumotlarni o'qing va aylantiring. Biz yuborilgan ma'lumotlarning turini aniq bilganimiz uchun, biz ham

Ip

dan

bayt

yoki aktyor

Ob'ekt

ga

Ip

tekshirilmasdan, ishlatiladigan oqimga bog'liq.

  • Ma'lumot oqimlari

    Birinchi uzunlik va keyin bayt yuborilganligi sababli, o'qish xuddi shu tartibda bajarilishi kerak. Agar uzunlik nol bo'lsa, o'qiladigan hech narsa yo'q. Agar baytlar namunaga aylantirilsa, bu holda of

    Ip

    java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); DataOutputStream clientOut = yangi DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = yangi DataInputStream (client.getInputStream ()); DataOutputStream serverOut = yangi DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = yangi DataInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); bayt messageOut = "Salom dunyo".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); System.out.println ("Xabar serverga yuborildi:" + yangi String (messageOut)); int uzunligi = serverIn.readInt (); if (uzunlik> 0) {bayt messageIn = yangi bayt [uzunlik]; serverIn.readFully (messageIn, 0, messageIn.length); }}}

  • Ob'ekt oqimlari

    java.io. ObjectInputStream -ni import qilish; java.io. ObjectOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); String messageOut = "Salom dunyo"; clientOut.writeObject (messageOut); clientOut.flush (); System.out.println ("Xabar serverga yuborildi:" + messageOut); String messageIn = (String) serverIn.readObject (); }}

Java Step16 -da tarmoq ilovasini yarating
Java Step16 -da tarmoq ilovasini yarating

16 -qadam. Jurnalni o'qish xabari

Jurnalga kirish uchun konsolga xabar qabul qilinganligini va uning mazmunini chop eting.

  • Ma'lumot oqimlari

    java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); DataOutputStream clientOut = yangi DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = yangi DataInputStream (client.getInputStream ()); DataOutputStream serverOut = yangi DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = yangi DataInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); bayt messageOut = "Salom dunyo".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); System.out.println ("Xabar serverga yuborildi:" + yangi String (messageOut)); int uzunligi = serverIn.readInt (); if (uzunlik> 0) {bayt messageIn = yangi bayt [uzunlik]; serverIn.readFully (messageIn, 0, messageIn.length); System.out.println ("Mijozdan xabar olindi:" + yangi String (messageIn)); }}}

  • Ob'ekt oqimlari

    java.io. ObjectInputStream -ni import qilish; java.io. ObjectOutputStream -ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); ObjectOutputStream clientOut = yangi ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = yangi ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = yangi ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = yangi ObjectInputStream (connection.getInputStream ()); System.out.println ("Aloqa tayyor."); String messageOut = "Salom dunyo"; clientOut.writeObject (messageOut); clientOut.flush (); System.out.println ("Xabar serverga yuborildi:" + messageOut); String messageIn = (String) serverIn.readObject (); System.out.println ("Mijozdan olingan xabar:" + messageIn); }}

Java Step17 -da tarmoq ilovasini yarating
Java Step17 -da tarmoq ilovasini yarating

17 -qadam. Ulanishlarni uzing

Bir tomon o'z oqimlarini yopganda, aloqa uziladi. Java -da, chiqish oqimini yopish orqali, ulangan soket va kirish oqimi ham yopiladi. Boshqa tarafdan ulanish o'chib qolganini bilib, xotira sızıntısının oldini olish uchun, chiqish oqimini yopish kerak.

// java.net. InetAddress -ga import kiritilmagan; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); // kod qoldirildi System.out.println ("Aloqa tayyor."); // kod qoldirildi clientOut.close (); serverOut.close (); }}

Java Step18 V2 -da tarmoq ilovasini yarating
Java Step18 V2 -da tarmoq ilovasini yarating

18 -qadam. Jurnalni uzish

Jurnalga kirish uchun konsolda chop etish ulanishlari uzilgan.

// java.net. InetAddress -ga import kiritilmagan; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); // kod qoldirildi System.out.println ("Aloqa tayyor."); // kod qoldirildi clientOut.close (); serverOut.close (); System.out.println ("Aloqa yopildi."); }}

Java Step19 -da tarmoq ilovasini yarating
Java Step19 -da tarmoq ilovasini yarating

19 -qadam. Serverni to'xtating

Ulanish uzilgan, lekin server hali ham ishlamoqda. Kabi

ServerSocket

hech qanday oqim bilan bog'liq emas, uni qo'ng'iroq qilib aniq yopish kerak

yopish ()

usul.

// java.net. InetAddress -ga import kiritilmagan; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); // kod qoldirildi System.out.println ("Aloqa tayyor."); // kod qoldirildi clientOut.close (); serverOut.close (); System.out.println ("Aloqa yopildi."); server.close (); }}

Java Step20 -da tarmoq ilovasini yarating
Java Step20 -da tarmoq ilovasini yarating

20 -qadam. Log serverini to'xtatish

Jurnalga kirish uchun konsol serveriga chop etish to'xtatildi.

// java.net. InetAddress -ga import kiritilmagan; java.net. ServerSocket -ni import qilish; java.net. Socket -ni import qilish; public class NetworkAppExample {public static void main (String args) tashlaydi Exception {String host = "localhost"; int port = 10430; ServerSocket server = yangi ServerSocket (port, 50, InetAddress.getByName (xost)); System.out.println ("Server ishga tushdi."); Socket mijoz = yangi Socket (host, port); System.out.println ("Serverga ulanmoqda …"); Soket aloqasi = server.accept (); System.out.println ("Aloqa o'rnatildi."); // kod qoldirildi System.out.println ("Aloqa tayyor."); // kod qoldirildi clientOut.close (); serverOut.close (); System.out.println ("Aloqa yopildi."); server.close (); System.out.println ("Server to'xtatildi."); }}

Java Step21 -da tarmoq ilovasini yarating
Java Step21 -da tarmoq ilovasini yarating

21 -qadam. Kompilyatsiya qiling va ishga tushiring

Yozuvlar bizga dastur muvaffaqiyatli yoki yo'qligini bilish imkonini berdi. Kutilayotgan chiqish:

Server ishga tushdi. Serverga ulanmoqda… Ulanish o'rnatildi. Aloqa tayyor. Serverga yuborilgan xabar: Salom Dunyo Mijozdan xabar keldi: Hello World Connections yopildi. Server to'xtatildi.

Agar sizning chiqishingiz yuqoridagi kabi bo'lmasa, ehtimol, bir nechta echim bor:

  • Agar chiqish chiziqda to'xtasa

    Aloqa o'rnatildi.

    va ob'ekt oqimlari ishlatiladi, har birini yuving

    ObjectOutputStream

  • sarlavhalar, negadir, yuborilmagani uchun, ishga tushirilgandan so'ng.
  • Agar chiqish chop etilsa

    java.net. BindException: Manzil allaqachon ishlatilgan

  • boshqa port raqamini tanlang, chunki ko'rsatilgan raqam allaqachon ishlatilgan.

Maslahatlar

  • Boshqa tarmoqdagi serverga ulanish, uzatilgan portga ega bo'lgan server ishlaydigan qurilmaning tashqi IP -manziliga ulanish orqali amalga oshiriladi.
  • Xuddi shu tarmoqdagi serverga ulanish server bilan ishlaydigan qurilmaning shaxsiy IP -manziliga ulanish yoki portni qayta yo'naltirish va qurilmaning tashqi IP -manziliga ulanish orqali amalga oshiriladi.
  • Hamachi kabi dasturlar bor, ular portni uzatmasdan serverga boshqa tarmoqqa ulanish imkonini beradi, lekin bu ikkala qurilmada ham dasturiy ta'minotni o'rnatishni talab qiladi.

Misollar

Tarmoq ilovalari blokirovka qiluvchi kirish/chiqishni ishlatishi kerak. Quyidagi misollar minimalist server va mijozlar tomonidan bajarilishini ko'rsatadi. Tarmoq kodi, asosan, maqoladagi bilan bir xil, faqat ba'zi parchalar sinxronlanmagan, tarmoqlarga ko'chirilgan va istisnolar ko'rib chiqilgan.

Server.java

java.io. IOException ni import qilish; java.net. InetAddress -ni import qilish; java.net. ServerSocket -ni import qilish; java.net. SocketException ni import qilish; java.net. UnknownHostException ni import qilish; java.util. ArrayList -ni import qilish; java.util. Collections ni import qilish; java.util. List -ni import qilish; /*** {@code Server} klassi tarmoqdagi serverning oxirgi nuqtasini ifodalaydi. {@code Server} bir marta ma'lum bir IP * manzil va portga bog'langan, mijozlar bilan aloqa o'rnatadi va ular bilan aloqa o'rnatishi yoki uzib qo'yishi mumkin. *

* Bu sinf xavfsiz. * * @version 1.0 * @see Client * @see Connection */ public class Server Runnable {private ServerSocket serverini amalga oshiradi; shaxsiy ro'yxat ulanishlar; xususiy mavzu; xususiy yakuniy Ob'ekt ConnectionsLock = new Object (); /** * Belgilangan xost nomi va portidagi mijozlar bilan o'zaro aloqada bo'ladigan {@code Server} tuzadi, kiruvchi mijozlar navbatining so'ralgan maksimal uzunligi. * * @param host Xost manzilidan foydalanish. * @param port Foydalanish uchun port raqami. * @param backlog Kiruvchi mijozlar navbatining maksimal uzunligini so'radi. * @throws NetworkException Agar serverni ishga tushirishda xatolik yuz bersa. */ umumiy server (String host, int port, int backlog) NetworkException -ni chiqaradi {try {server = new ServerSocket (port, backlog, InetAddress.getByName (host))); } catch (UnknownHostException e) {new NetworkException tashlash ("Xost nomini hal qilib bo'lmadi:" + xost, e); } catch (IllegalArgumentException e) {new NetworkException tashlash ("Port raqami 0 dan 65535 gacha bo'lishi kerak (shu jumladan):" + port); } catch (IOException e) {new NetworkException tashlash ("Serverni ishga tushirib bo'lmadi.", e); } ulanishlar = Collections.synchronizedList (yangi ArrayList ()); thread = new Thread (bu); thread.start (); } /*** Belgilangan xost nomi va portida mijozlar bilan o'zaro aloqada bo'ladigan {@code Server} tuzadi. * * @param host Xost manzilini bog'lash. * @param port Bog'lanish uchun port raqami. * @throws NetworkException Agar serverni ishga tushirishda xatolar yuzaga kelsa. */ public server (String host, int port) NetworkException ni chiqaradi {bu (xost, port, 50); } /*** Mijozlarning kiruvchi ulanishlarini tinglaydi, qabul qiladi va ro'yxatdan o'tkazadi. */ @Override public void run () {while (! Server.isClosed ()) {try {Connections.add (new Connection (server.accept ()))); } catch (SocketException e) {if (! e.getMessage (). teng ("Soket yopiq")) {e.printStackTrace (); }} catch (NetworkException | IOException e) {e.printStackTrace (); }}} /*** Ma'lumotlarni barcha ro'yxatdan o'tgan mijozlarga yuboradi. * * @param ma'lumotlari Yuboriladigan ma'lumotlar. * @throws IllegalStateException Agar server oflaynda bo'lsa, ma'lumotlarni yozishga harakat qilinadi. * @throws IllegalArgumentException Agar yuboriladigan ma'lumotlar null bo'lsa. */ public void eshittirish (Ob'ekt ma'lumotlari) {if (server.isClosed ()) {new IllegalStateException tashlash ("Ma'lumotlar yuborilmadi, server oflaynda."); } if (data == null) {new IllegalArgumentException ("null data") tashlash; } sinxronlangan (ConnectionsLock) {uchun (Ulanish aloqasi: ulanishlar) {harakat qilib ko'ring {connection.send (ma'lumotlar); System.out.println ("Ma'lumotlar mijozga muvaffaqiyatli yuborildi."); } catch (NetworkException e) {e.printStackTrace (); }}}} /*** O'chirish xabarini yuboradi va ko'rsatilgan mijozni uzadi. * * @param ulanishi Mijoz aloqani uzadi. * @throws NetworkException Agar ulanishni yopishda xatolik yuz bersa. */ public void disconnect (Connection connection) NetworkException ni chiqaradi {if (Connections.remove (connection)) {connection.close (); }} /*** Barcha mijozlarga uzilish xabarini yuboradi, ularni uzadi va serverni to'xtatadi. */ public void close () NetworkException {synchronized (connectionLock) {for (Connection connection: Connections) {try {connection.close (); } catch (NetworkException e) {e.printStackTrace (); }}} ulanishlar. aniq (); {server.close () ni sinab ko'ring; } catch (IOException e) {new NetworkException tashlash ("Serverni yopishda xato."); } nihoyat {thread.interrupt (); }} /*** Server onlayn yoki yo'qligini qaytaradi. * * @return True, agar server onlayn bo'lsa. Yolg'on, aks holda. */ public boolean isOnline () {return! server.isClosed (); } /*** Ro'yxatdan o'tgan mijozlar qatorini qaytaradi. */ public Connection getConnections () {synchronized (ConnectionsLock) {return links.toArray (new Connection [Connections.size ()])); }}}

Mijoz.java

java.io. IOException ni import qilish; java.net. Socket -ni import qilish; java.net. UnknownHostException ni import qilish; /*** {@code Client} klassi tarmoqdagi mijozning oxirgi nuqtasini ifodalaydi. {@code Client}, ma'lum bir * serverga ulangandan so'ng, faqat server bilan aloqa qila oladi. Boshqa mijozlar ma'lumotni olishlari yoki olmasliklari * serverning bajarilishiga bog'liq. *

* Bu sinf xavfsiz. * * @version 1.0 * @see Server * @see Connection */ umumiy sinf mijozi {private Connection connection; /*** Belgilangan xost va portda serverga ulangan {@code Client} tuzadi. * * @param host Xost manzilini bog'lash. * @param port Bog'lanish uchun port raqami. * @throws NetworkException Agar serverni ishga tushirishda xatolik yuz bersa. */ public Client (String host, int port) NetworkException -ni chiqaradi {try {connection = new Connection (new Socket (host, port))); } catch (UnknownHostException e) {new NetworkException tashlash ("Xost nomini hal qilib bo'lmadi:" + xost, e); } catch (IllegalArgumentException e) {new NetworkException tashlash ("Port raqami 0 dan 65535 gacha bo'lishi kerak (shu jumladan):" + port); } catch (IOException e) {new NetworkException tashlash ("Serverni ishga tushirib bo'lmadi.", e); }} /*** Ma'lumotni boshqa tomonga yuboradi. * * @param ma'lumotlari Yuboriladigan ma'lumotlar. * @throws NetworkException Chiqish oqimiga yozish muvaffaqiyatsiz bo'lsa. * @throws IllegalStateException Agar ulanish yopilganda ma'lumotlarni yozishga urinilsa. * @throws IllegalArgumentException Agar yuboriladigan ma'lumotlar null bo'lsa. * @throws UnsupportedOperationException Agar qo'llab -quvvatlanmaydigan ma'lumotlar turini yuborishga urinilsa. */ public void send (Object data) yuboradi NetworkException {connection.send (ma'lumotlar); } /*** Serverga uzilish xabarini yuboradi va u bilan aloqani yopadi. */ public void close () NetworkException {connection.close () ni tashlaydi; } /*** Mijoz serverga ulanganmi yoki yo'qligini qaytaradi. * * @return True, agar mijoz ulangan bo'lsa. Yolg'on, aks holda. */ public boolean isOnline () {return connection.isConnected (); } /*** Mijozning {@link Connection} misolini qaytaradi. */ public Connection getConnection () {qaytish aloqasi; }}

Ulanish.java

java.io. DataInputStream -ni import qilish; java.io. DataOutputStream -ni import qilish; java.io. IOException ni import qilish; java.net. Socket -ni import qilish; java.net. SocketException ni import qilish; /** * {@code Connection} klassi serverdan mijozga yoki tarmoqdagi mijozning oxirgi nuqtasini ifodalaydi * {@code Connection}, ulangandan so'ng, boshqa tomonlar yoki tomonlar bilan ma'lumot almashishi mumkin. server * dasturida. *

* Bu sinf xavfsiz. * * @version 1.0 * @see Server * @see Client */ public class Connection Runnable {private socket socket; Maxsus DataOutputStream chiqishi; Maxsus DataInputStream; xususiy mavzu; private final Object writeLock = new Object (); private final Object readLock = new Object (); /*** Belgilangan {@link Socket} oqimlari yordamida {@code Connection} ni quradi. * * @param soket - oqimlarni olish uchun soket.*/ public Connection (Socket socket) NetworkException ni chiqaradi {if (socket == null) {new IllegalArgumentException ("null socket")); } this.socket = soket; {out = new DataOutputStream (socket.getOutputStream ()) ni sinab ko'ring; } catch (IOException e) {new NetworkException tashlash ("Chiqish oqimiga kira olmadi.", e); } harakat qilib ko'ring {in = yangi DataInputStream (socket.getInputStream ()); } catch (IOException e) {new NetworkException tashlash ("Kirish oqimiga kira olmadi.", e); } thread = yangi mavzu (bu); thread.start (); } /*** Boshqa tomon bilan aloqa mavjud bo'lganda xabarlarni o'qiydi. */ @Override public void run () {while (! Socket.isClosed ()) {try {int identifikatori; bayt bayt; sinxronlashtirilgan (readLock) {identifikator = in.readInt (); int uzunligi = in.readInt (); if (uzunlik> 0) {bayt = yangi bayt [uzunlik]; in.readFully (baytlar, 0, baytlar uzunligi); } boshqa {davom ettirish; }} switch (identifikator) {case Identifier. INTERNAL: String buyrug'i = yangi String (bayt); if (command.equals ("ajratish"))) {if (! socket.isClosed ()) {System.out.println ("O'chirish paketi qabul qilindi."); harakat qilib ko'ring {close (); } catch (NetworkException e) {qaytish; }}} tanaffus; case Identifier. TEXT: System.out.println ("Xabar qabul qilindi:" + yangi satr (bayt)); tanaffus; standart: System.out.println ("Tanib olinmagan ma'lumotlar qabul qilindi."); }} catch (SocketException e) {if (! e.getMessage (). teng ("Soket yopiq")) {e.printStackTrace (); }} catch (IOException e) {e.printStackTrace (); }}} /*** Ma'lumotni boshqa tomonga yuboradi. * * @param ma'lumotlari Yuboriladigan ma'lumotlar. * @throws NetworkException Chiqish oqimiga yozish muvaffaqiyatsiz bo'lsa. * @throws IllegalStateException Agar ulanish yopilganda ma'lumotlarni yozishga urinilsa. * @throws IllegalArgumentException Agar yuboriladigan ma'lumotlar null bo'lsa. * @throws UnsupportedOperationException Agar qo'llab -quvvatlanmaydigan ma'lumotlar turini yuborishga urinilsa. */ public void send (Ob'ekt ma'lumotlari) NetworkException ni tashlaydi {if (socket.isClosed ()) {tashlash new IllegalStateException ("Ma'lumotlar yuborilmagan, ulanish yopilgan."); } if (data == null) {new IllegalArgumentException ("null data") tashlash; } int identifikatori; bayt bayt; if (ma'lumotlar misoli String) {identifikator = Identifier. TEXT; bayt = ((String) ma'lumotlar).getBytes (); } else {new UnsupportedOperationException tashlash ("Qo'llab -quvvatlanmaydigan ma'lumotlar turi:" + data.getClass ()); } harakat qilib ko'ring {synchronized (writeLock) {out.writeInt (identifikator); out.writeInt (bayt.length); out.write (baytlar); out.flush (); }} catch (IOException e) {new NetworkException tashlash ("Ma'lumot yuborib bo'lmadi.", e); }} /*** Boshqa tomonga uzilish xabarini yuboradi va u bilan aloqani yopadi. */ public void close () NetworkException {if (socket.isClosed ()) {tashlash new IllegalStateException ("Ulanish allaqachon yopilgan.") ni chiqaradi; } harakat qilib ko'ring {byte message = "disconnect".getBytes (); sinxronlashtirilgan (writeLock) {out.writeInt (Identifier. INTERNAL); out.writeInt (message.length); out.write (xabar); out.flush (); }} catch (IOException e) {System.out.println ("Aloqa xabarini yuborib bo'lmadi."); } harakat qilib ko'ring {synchronized (writeLock) {out.close (); }} catch (IOException e) {new NetworkException tashlash ("Ulanishni yopishda xato.", e); } nihoyat {thread.interrupt (); }} /*** Boshqa tomon bilan aloqa mavjud yoki yo'qligini qaytaradi. * * @Return rost, agar ulanish tirik bo'lsa. Yolg'on, aks holda. */ public boolean isConnected () {return! socket.isClosed (); }}

Identifikator.java

/** * {@code Identifier} sinfida {@link Connection} tomonidan tarmoq orqali yuborilgan ma'lumotlarni * ketma -ketlashtirish va ketma -ketlashtirish uchun ishlatiladigan doimiylar mavjud. * * @version 1.0 * @seloling * / umumiy yakuniy sinf identifikatori { / ** * ichki xabarlar uchun identifikator. */ public static final int INTERNAL = 1; /*** Matnli xabarlar uchun identifikator. */ public static final int TEXT = 2; }

NetworkException.java

/*** {@code NetworkException} klassi tarmoq bilan bog'liq xatoni bildiradi. * / public class NetworkException Exception kengaytiradi { / *** Xabar sifatida {@code null} bo'lgan {@code NetworkException} tuzadi. * / public NetworkException () {} / *** Belgilangan xabar bilan {@code NetworkException} tuzadi. * * @param xabari Xatoni tavsiflovchi xabar. */ public NetworkException (String xabar) {super (xabar); } /*** Belgilangan xabar va sabab bilan {@code NetworkException} tuzadi. * * @param xabari Xatoni tavsiflovchi xabar. * @param sabab Xato sababi. */ public NetworkException (String message, Throwable sabab) {super (xabar, sabab); } /*** Belgilangan sabab bilan {@code NetworkException} tuzadi. * * @param sabab Xato sababi. */ public NetworkException (Throwable sabab) {super (sabab); }}

Foydalanish namunasi.java

/*** {@code UsageExample} sinfida {@link Server} va {@link Client} ilovalari ko'rsatilgan. Bu misollar har bir segment bajarilishini ta'minlash uchun * {@link Thread#sleep (long)} dan foydalanadi, chunki tez boshlanishi va yopilishi ba'zi * segmentlar bajarilmasligiga olib keladi. * * @version 1.0 * @see Server * @see Client */ public class UsageExample {public static void main (String args) Exception {String host = "localhost"; int port = 10430; Server serveri = yangi server (xost, port); Mijoz -mijoz = yangi mijoz (xost, port); Thread.sleep (100L); client.send ("Salom."); server.broadcast ("Hey, yigit!"); Thread.sleep (100L); server.disconnect (server.getConnections () [0]); // yoki client.close () mijoz tomonidagi serverdan uzish uchun.close (); }}

Tavsiya: