Yuav Ua Li Cas Tsim Daim Ntawv Thov Network hauv Java (nrog Duab)

Cov txheej txheem:

Yuav Ua Li Cas Tsim Daim Ntawv Thov Network hauv Java (nrog Duab)
Yuav Ua Li Cas Tsim Daim Ntawv Thov Network hauv Java (nrog Duab)

Video: Yuav Ua Li Cas Tsim Daim Ntawv Thov Network hauv Java (nrog Duab)

Video: Yuav Ua Li Cas Tsim Daim Ntawv Thov Network hauv Java (nrog Duab)
Video: Easy Way To Bypass Google Account Verification (New) 2024, Plaub Hlis Ntuj
Anonim

Kev sau cov cai uas ua rau qee yam khoom siv yog txaus siab heev. Tab sis, sau cov cai uas ua rau ntau lub cuab yeej uas sib tham nrog ib leeg tsuas yog ua pov thawj lub neej. Kab lus no yuav qhia koj yuav ua li cas txuas thiab pauv cov lus sib tham hauv network siv kev tswj hwm kev sib kis (TCP).

Hauv kab lus no, koj yuav teeb tsa daim ntawv thov uas yuav txuas koj lub khoos phis tawj rau nws tus kheej thiab, qhov tseem ceeb, ua rau nws vwm - tham nrog nws tus kheej. Koj tseem yuav kawm qhov sib txawv ntawm ob qhov kev siv dav tshaj plaws rau kev sib tham hauv Java thiab lawv ua haujlwm li cas.

Cov Ntaub Ntawv thiab Cov Hom Phiaj

Ua ntej dhia mus rau hauv txoj cai, qhov sib txawv ntawm ob txoj kev siv hauv kab lus yuav tsum muaj qhov sib txawv.

Cov Kwj Dej

Cov ntaub ntawv ntws ua cov ntaub ntawv qub thiab cov hlua. Cov ntaub ntawv xa hla cov ntaub ntawv xav tau yuav tsum tau ua los ntawm tus kheej thiab deserialized uas ua rau nws nyuaj rau hloov cov ntaub ntawv nyuaj. Tab sis, cov ntaub ntawv ntws tuaj yeem sib tham nrog cov servers thiab cov neeg siv khoom sau ua lwm yam lus dua li Java. Cov kwj deg nyoos zoo ib yam li cov ntaub ntawv ntws hauv qhov ntawd, tab sis cov ntaub ntawv ntws kom ntseeg tau tias cov ntaub ntawv tau teeb tsa hauv lub platform txoj kev ywj pheej uas muaj txiaj ntsig vim tias ob tog yuav tuaj yeem nyeem cov ntaub ntawv xa tuaj.

Lub Hom Phiaj

Lub hom phiaj ntws cov txheej txheem cov ntaub ntawv qub thiab cov khoom uas siv

Serializable

interface. Cov ntaub ntawv xa hla cov khoom ntws tau txiav tawm ncaj qha thiab deserialized uas ua rau nws yooj yim dua rau hloov cov ntaub ntawv nyuaj. Tab sis, cov kwj dej tsuas tuaj yeem sib tham nrog cov servers thiab cov neeg siv khoom sau hauv Java. Tsis tas li,

ObjectOutputStream

thaum pib, xa lub taub hau rau

InputStream

ntawm lwm tog neeg uas, thaum pib ua haujlwm, thaiv kev ua haujlwm kom txog thaum lub taub hau tau txais.

Cov kauj ruam

Tsim Daim Ntawv Thov Network hauv Java Step1
Tsim Daim Ntawv Thov Network hauv Java Step1

Kauj Ruam 1. Tsim chav kawm

Tsim chav kawm thiab npe nws li cas koj xav tau. Hauv kab lus no, nws yuav muaj npe

NetworkAppExample

pej xeem chav NetworkAppExample {}

Tsim Daim Ntawv Thov Network hauv Java Step2
Tsim Daim Ntawv Thov Network hauv Java Step2

Kauj Ruam 2. Tsim txoj hauv kev tseem ceeb

Tsim txoj hauv kev tseem ceeb thiab tshaj tawm tias nws yuav cuam tshuam qhov tshwj xeeb ntawm

Kev zam

hom thiab ib pawg subclass ntawm nws - txhua qhov kev zam. Qhov no suav tias yog kev coj ua tsis zoo, tab sis pom zoo rau cov piv txwv liab qab.

pej xeem chav NetworkAppExample {pej xeem zoo li qub tsis muaj dab tsi tseem ceeb (Txoj hlua args) cuam tshuam kev zam {}}

Tsim Daim Ntawv Thov Network hauv Java Step3
Tsim Daim Ntawv Thov Network hauv Java Step3

Kauj Ruam 3. Tshaj tawm qhov chaw nyob server

Qhov piv txwv no yuav siv tus tswv chaw nyob hauv cheeb tsam thiab tus lej chaw nres nkoj uas xav tau. Tus lej chaw nres nkoj yuav tsum yog nyob ntawm thaj tsam 0 txog 65535 (suav nrog). Txawm li cas los xij, cov naj npawb chaw nres nkoj kom zam ntau ntawm 0 txog 1023 (suav nrog) vim tias lawv tau tshwj tseg cov chaw nres nkoj.

pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; }}

Tsim Daim Ntawv Thov Network hauv Java Step4
Tsim Daim Ntawv Thov Network hauv Java Step4

Kauj Ruam 4. Tsim server

Neeg rau zaub mov tau khi rau qhov chaw nyob thiab chaw nres nkoj thiab mloog rau kev sib txuas nkag. Hauv Java,

ServerSocket

sawv cev rau ntawm server-side endpoint thiab nws txoj haujlwm yog lees txais kev sib txuas tshiab.

ServerSocket

tsis muaj kwj dej rau nyeem thiab xa cov ntaub ntawv vim tias nws tsis sawv cev rau kev sib txuas ntawm cov server thiab tus neeg siv khoom.

ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); }}

Tsim Daim Ntawv Thov Network hauv Java Step5
Tsim Daim Ntawv Thov Network hauv Java Step5

Kauj Ruam 5. Nkag mus pib server

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub console uas server tau pib lawm.

ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); }}

Tsim Daim Ntawv Thov Network hauv Java Step6
Tsim Daim Ntawv Thov Network hauv Java Step6

Kauj Ruam 6. Tsim tus neeg siv khoom

Tus neeg siv khoom tau khi rau qhov chaw nyob thiab chaw nres nkoj ntawm tus neeg rau zaub mov thiab mloog pob ntawv (cov lus) tom qab tsim kev sib txuas. Hauv Java,

Qhov (socket)

nruab nrab yog ib tus neeg siv khoom-sab kawg txuas nrog lub server lossis txuas (los ntawm server) rau cov neeg siv khoom thiab siv los sib txuas lus nrog tog neeg ntawm lwm qhov kawg.

ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); }}

Tsim Network Thov hauv Java Step7
Tsim Network Thov hauv Java Step7

Kauj Ruam 7. Nkag mus txuas qhov txuas

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub console uas tau txuas nrog lawm.

ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {Txoj hlua tuav = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); }}

Tsim Daim Ntawv Thov Network hauv Java Step8
Tsim Daim Ntawv Thov Network hauv Java Step8

Kauj Ruam 8. Tsim kom muaj kev sib txuas

Cov neeg siv khoom yuav tsis txuas tshwj tsis yog server mloog thiab lees txais, hauv lwm lo lus tsim, sib txuas. Hauv Java, kev sib txuas tau tsim los siv

txais ()

txoj kev ntawm

ServerSocket

chav kawm Txoj kev yuav thaiv kev ua tiav kom txog thaum tus neeg siv khoom sib txuas.

ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); }}

Tsim Daim Ntawv Thov Network hauv Java Step9
Tsim Daim Ntawv Thov Network hauv Java Step9

Kauj Ruam 9. Nkag tsim kev sib txuas

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub console uas kev sib txuas ntawm server thiab tus thov kev pab tau tsim.

ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {Txoj hlua tuav = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); }}

Tsim Daim Ntawv Thov Network hauv Java Step10
Tsim Daim Ntawv Thov Network hauv Java Step10

Kauj Ruam 10. Npaj kev sib txuas lus

Kev sib txuas lus tau ua tiav hla cov kwj deg thiab, hauv daim ntawv thov no, cov kwj ntws ntawm (kev sib txuas los ntawm) server (rau cov neeg siv khoom) thiab cov neeg siv khoom yuav tsum tau txuas rau cov ntaub ntawv lossis cov khoom ntws. Nco ntsoov, ob tog yuav tsum tau siv tib hom dej.

  • Cov ntaub ntawv ntws

    ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); DataOutputStream clientOut = tshiab DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = tshiab DataInputStream (client.getInputStream ()); DataOutputStream serverOut = tshiab DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = DataInputStream tshiab (txuas.getInputStream ()); }}

  • Lub hom phiaj ntws

    Thaum siv ntau cov kwj dej tau siv, cov kwj tawm yuav tsum tau pib ua qhov qub raws li cov kwj tawm vim tias

    ObjectOutputStream

    xa ib lub taub hau rau lwm tog neeg thiab

    ObjectInputStream

    thaiv kev ua kom txog thaum nws nyeem lub taub hau.

    ntshuam java.io. ObjectInputStream; ntshuam java.io. ObjectOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); ObjectOutputStream clientOut = tshiab ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = tshiab ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = tshiab ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = tshiab ObjectInputStream (connection.getInputStream ()); }}

    Kev txiav txim raws li tau teev tseg hauv cov cai saum toj no yuav yooj yim dua kom nco qab - thawj zaug pib tso cov kwj tawm tom qab ntawd tso cov kwj dej hauv tib qho kev txiav txim. Txawm li cas los xij, lwm qhov kev txiav txim rau kev pib ua cov khoom ntws yog cov hauv qab no:

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

Tsim Daim Ntawv Thov Network hauv Java Step11
Tsim Daim Ntawv Thov Network hauv Java Step11

Kauj Ruam 11. Nkag mus tias kev sib txuas lus tau npaj tiav

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub console tias kev sib txuas lus tau npaj tiav.

// chaws rho tawm ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); // txoj cai rho tawm System.out.println ("Kev sib txuas lus tau npaj tiav."); }}

Tsim Daim Ntawv Thov Network hauv Java Step12
Tsim Daim Ntawv Thov Network hauv Java Step12

Kauj Ruam 12. Tsim cov lus

Hauv daim ntawv thov no,

Nyob Zoo Ntiaj Teb

ntawv yuav raug xa mus rau tus neeg rau zaub mov ib yam nkaus

peb

los yog

Txoj hlua

. Tshaj tawm qhov sib txawv ntawm hom uas nyob ntawm kwj siv. Siv

peb

rau cov ntaub ntawv ntws thiab

Txoj hlua

rau cov khoom ntws.

  • Cov ntaub ntawv ntws

    Siv cov ntaub ntawv ntws, kev ua tiav yog ua los ntawm kev hloov cov khoom mus rau cov ntaub ntawv qub lossis hom

    Txoj hlua

    . Hauv qhov no,

    Txoj hlua

    hloov dua siab tshiab rau

    peb

    es tsis txhob sau siv

    writeBytes ()

    txoj hauv kev los qhia yuav ua li cas nws yuav ua tiav nrog lwm yam khoom, xws li cov duab lossis lwm yam ntaub ntawv.

    ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); DataOutputStream clientOut = tshiab DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = tshiab DataInputStream (client.getInputStream ()); DataOutputStream serverOut = tshiab DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = DataInputStream tshiab (txuas.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); byte messageOut = "Nyob Zoo Ntiaj Teb".getBytes (); }}

  • Lub hom phiaj ntws

    ntshuam java.io. ObjectInputStream; ntshuam java.io. ObjectOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); ObjectOutputStream clientOut = tshiab ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = tshiab ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = tshiab ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = tshiab ObjectInputStream (connection.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); String messageOut = "Nyob Zoo Ntiaj Teb"; }}

Tsim Daim Ntawv Thov Network hauv Java Step13
Tsim Daim Ntawv Thov Network hauv Java Step13

Kauj Ruam 13. Xa xov

Sau cov ntaub ntawv mus rau cov kwj tawm thiab yaug cov kwj kom ntseeg tau tias cov ntaub ntawv tau raug sau tag nrho.

  • Cov ntaub ntawv ntws

    Qhov ntev ntawm cov lus xav tau yuav tsum tau xa ua ntej kom lwm tus neeg paub pes tsawg bytes nws yuav tsum tau nyeem. Tom qab qhov ntev raug xa mus raws li hom tseem ceeb ua ntej, bytes tuaj yeem xa mus.

    ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); DataOutputStream clientOut = tshiab DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = tshiab DataInputStream (client.getInputStream ()); DataOutputStream serverOut = tshiab DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = DataInputStream tshiab (txuas.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); byte messageOut = "Nyob Zoo Ntiaj Teb".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); }}

  • Lub hom phiaj ntws

    ntshuam java.io. ObjectInputStream; ntshuam java.io. ObjectOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); ObjectOutputStream clientOut = tshiab ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = tshiab ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = tshiab ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = tshiab ObjectInputStream (connection.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); String messageOut = "Nyob Zoo Ntiaj Teb"; clientOut.writeObject (messageOut); clientOut.flush (); }}

Tsim Daim Ntawv Thov Network hauv Java Step14
Tsim Daim Ntawv Thov Network hauv Java Step14

Kauj Ruam 14. Log xa lus

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub console uas tau xa cov lus.

  • Cov ntaub ntawv ntws

    ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); DataOutputStream clientOut = tshiab DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = tshiab DataInputStream (client.getInputStream ()); DataOutputStream serverOut = tshiab DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = DataInputStream tshiab (txuas.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); byte messageOut = "Nyob Zoo Ntiaj Teb".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); System.out.println ("Cov lus xa mus rau server:" + Cov hlua tshiab (messageOut)); }}

  • Lub hom phiaj ntws

    ntshuam java.io. ObjectInputStream; ntshuam java.io. ObjectOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); ObjectOutputStream clientOut = tshiab ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = tshiab ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = tshiab ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = tshiab ObjectInputStream (connection.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); String messageOut = "Nyob Zoo Ntiaj Teb"; clientOut.writeObject (messageOut); clientOut.flush (); System.out.println ("Cov lus xa mus rau server:" + messageOut); }}

Tsim Daim Ntawv Thov Network hauv Java Step15
Tsim Daim Ntawv Thov Network hauv Java Step15

Kauj Ruam 15. Nyeem cov lus

Nyeem cov ntaub ntawv los ntawm cov kwj tawm thiab hloov nws. Txij li thaum peb paub tseeb tias hom kev xa cov ntaub ntawv, peb yuav yog ib qho tsim

Txoj hlua

los ntawm

peb

los yog cam khwb cia

Lub hom phiaj

rau

Txoj hlua

tsis muaj kev txheeb xyuas, nyob ntawm kwj siv.

  • Cov ntaub ntawv ntws

    Raws li qhov ntev tau xa ua ntej thiab bytes tom qab ntawd, kev nyeem ntawv yuav tsum ua tiav nyob rau tib qho kev txiav txim. Nyob rau hauv rooj plaub ntev yog xoom, tsis muaj dab tsi los nyeem. Lub hom phiaj yog deserialized thaum bytes tau hloov dua siab tshiab rau hauv ib qho piv txwv, hauv qhov no, ntawm

    Txoj hlua

    ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); DataOutputStream clientOut = tshiab DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = tshiab DataInputStream (client.getInputStream ()); DataOutputStream serverOut = tshiab DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = DataInputStream tshiab (txuas.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); byte messageOut = "Nyob Zoo Ntiaj Teb".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); System.out.println ("Cov lus xa mus rau server:" + Cov hlua tshiab (messageOut)); int ntev = serverIn.readInt (); yog (ntev> 0) {byte messageIn = tshiab byte [ntev]; serverIn.readFully (messageIn, 0, messageIn.length); }}}

  • Lub hom phiaj ntws

    ntshuam java.io. ObjectInputStream; ntshuam java.io. ObjectOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); ObjectOutputStream clientOut = tshiab ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = tshiab ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = tshiab ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = tshiab ObjectInputStream (connection.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); String messageOut = "Nyob Zoo Ntiaj Teb"; clientOut.writeObject (messageOut); clientOut.flush (); System.out.println ("Cov lus xa mus rau server:" + messageOut); String messageIn = (Txoj hlua) serverIn.readObject (); }}

Tsim Daim Ntawv Thov Network hauv Java Step16
Tsim Daim Ntawv Thov Network hauv Java Step16

Kauj Ruam 16. Nkag mus nyeem cov lus

Txhawm rau nkag mus rau lub hom phiaj, luam tawm rau lub console uas tau txais cov lus thiab luam nws cov ntsiab lus.

  • Cov ntaub ntawv ntws

    ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); DataOutputStream clientOut = tshiab DataOutputStream (client.getOutputStream ()); DataInputStream clientIn = tshiab DataInputStream (client.getInputStream ()); DataOutputStream serverOut = tshiab DataOutputStream (connection.getOutputStream ()); DataInputStream serverIn = DataInputStream tshiab (txuas.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); byte messageOut = "Nyob Zoo Ntiaj Teb".getBytes (); clientOut.writeInt (messageOut.length); clientOut.write (messageOut); clientOut.flush (); System.out.println ("Cov lus xa mus rau server:" + Cov hlua tshiab (messageOut)); int ntev = serverIn.readInt (); yog (ntev> 0) {byte messageIn = tshiab byte [ntev]; serverIn.readFully (messageIn, 0, messageIn.length); System.out.println ("Cov lus tau txais los ntawm tus neeg siv khoom:" + Cov hlua tshiab (messageIn)); }}}

  • Lub hom phiaj ntws

    ntshuam java.io. ObjectInputStream; ntshuam java.io. ObjectOutputStream; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); ObjectOutputStream clientOut = tshiab ObjectOutputStream (client.getOutputStream ()); ObjectOutputStream serverOut = tshiab ObjectOutputStream (connection.getOutputStream ()); ObjectInputStream clientIn = tshiab ObjectInputStream (client.getInputStream ()); ObjectInputStream serverIn = tshiab ObjectInputStream (connection.getInputStream ()); System.out.println ("Kev sib txuas lus tau npaj lawm."); String messageOut = "Nyob Zoo Ntiaj Teb"; clientOut.writeObject (messageOut); clientOut.flush (); System.out.println ("Cov lus xa mus rau server:" + messageOut); String messageIn = (Txoj hlua) serverIn.readObject (); System.out.println ("Cov lus tau txais los ntawm tus neeg siv khoom:" + messageIn); }}

Tsim Daim Ntawv Thov Network hauv Java Step17
Tsim Daim Ntawv Thov Network hauv Java Step17

Kauj Ruam 17. Txiav kev sib txuas

Kev sib txuas raug txiav tawm thaum ib tog neeg kaw nws cov kwj deg. Hauv Java, los ntawm kev kaw cov kwj tawm, cuam tshuam nrog lub qhov (socket) thiab cov dej nkag nkag tau raug kaw, ib yam. Thaum ib tog neeg ntawm lwm qhov kawg pom tias kev sib txuas tau tuag lawm, nws yuav tsum kaw nws cov kwj tawm, ib yam, txhawm rau tiv thaiv kev nco los.

// chaws rho tawm ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); // txoj cai rho tawm System.out.println ("Kev sib txuas lus tau npaj tiav."); // txoj cai rho tawm clientOut.close (); serverOut.close (); }}

Tsim Daim Ntawv Thov Network hauv Java Step18 V2
Tsim Daim Ntawv Thov Network hauv Java Step18 V2

Kauj Ruam 18. Txheeb cais

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub console sib txuas tau raug txiav tawm.

// chaws rho tawm ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); // txoj cai rho tawm System.out.println ("Kev sib txuas lus tau npaj tiav."); // txoj cai rho tawm clientOut.close (); serverOut.close (); System.out.println ("Kev sib txuas raug kaw."); }}

Tsim Daim Ntawv Thov Network hauv Java Step19
Tsim Daim Ntawv Thov Network hauv Java Step19

Kauj Ruam 19. Txiav server

Kev sib txuas tau raug txiav tawm, tab sis server tseem tab tom ua haujlwm. Raws li

ServerSocket

tsis cuam tshuam nrog ib qho kwj deg, nws yuav tsum tau hais kom meej meej kaw los ntawm kev hu xov tooj

kaw ()

txoj kev.

// chaws rho tawm ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); // txoj cai rho tawm System.out.println ("Kev sib txuas lus tau npaj tiav."); // txoj cai rho tawm clientOut.close (); serverOut.close (); System.out.println ("Kev sib txuas raug kaw."); neeg rau zaub mov.close (); }}

Tsim Daim Ntawv Thov Network hauv Java Step20
Tsim Daim Ntawv Thov Network hauv Java Step20

Kauj Ruam 20. Txiav tus neeg rau zaub mov txiav

Rau kev nkag mus rau lub hom phiaj, luam tawm rau lub server server tau raug txiav tawm.

// chaws rho tawm ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. Socket; pej xeem chav NetworkAppExample {pej xeem zoo li qub void lub ntsiab (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; ServerSocket server = ServerSocket tshiab (chaw nres nkoj, 50, InetAddress.getByName (tus tswv tsev)); System.out.println ("Server tau pib."); Qhov (socket) tus neeg siv = qhov (socket) tshiab (tus tswv tsev, chaw nres nkoj); System.out.println ("Txuas rau server …"); Qhov txuas txuas = server.accept (); System.out.println ("Kev sib txuas tau tsim."); // txoj cai rho tawm System.out.println ("Kev sib txuas lus tau npaj tiav."); // txoj cai rho tawm clientOut.close (); serverOut.close (); System.out.println ("Kev sib txuas raug kaw."); neeg rau zaub mov.close (); System.out.println ("Server tiav."); }}

Tsim Daim Ntawv Thov Network hauv Java Step21
Tsim Daim Ntawv Thov Network hauv Java Step21

Kauj Ruam 21. Sau thiab khiav

Nkag mus rau peb kom paub tias daim ntawv thov ua tiav lossis tsis. Kev cia siab tso tawm:

Neeg rau zaub mov pib. Txuas mus rau server… Kev sib txuas tau tsim. Kev sib txuas lus tau npaj txhij Cov lus xa mus rau server: Nyob Zoo Hauv Ntiaj Teb Cov lus tau txais los ntawm cov neeg siv: Nyob Zoo Ntiaj Teb Kev Sib Txuas raug kaw. Neeg rau zaub mov xaus.

Yog tias koj qhov kev tso tawm tsis zoo li qhov saum toj no, uas tsis zoo li yuav tshwm sim, muaj qee qhov kev daws teeb meem:

  • Yog tias qhov tso tawm nres ntawm kab

    Tsim kev sib txuas.

    thiab cov khoom kwj tau siv, yaug txhua qhov

    ObjectOutputStream

  • tam sim tom qab pib vim hais tias headers, rau qee qhov laj thawj, tsis tau xa.
  • Yog tias cov ntawv luam tawm

    java.net. BindException: Chaw nyob twb tau siv lawm

  • xaiv tus naj npawb chaw nres nkoj sib txawv vim tias ib qho tshwj xeeb twb tau siv lawm.

Lub tswv yim

  • Kev txuas mus rau tus neeg rau zaub mov ntawm lub network sib txawv yog ua tiav los ntawm kev txuas mus rau sab nraud IP chaw nyob ntawm lub cuab yeej uas khiav cov server uas muaj chaw nres nkoj xa mus.
  • Kev txuas mus rau tus neeg rau zaub mov ntawm tib lub network tau ua tiav los ntawm kev txuas mus rau tus IP tus kheej qhov chaw ntawm lub cuab yeej ua haujlwm rau server lossis xa chaw nres nkoj thiab txuas mus rau sab nraud IP chaw nyob ntawm lub cuab yeej.
  • Muaj cov software, xws li Hamachi, uas tso cai txuas rau lub server hauv lwm lub network yam tsis tau xa chaw nres nkoj, tab sis nws xav tau kev teeb tsa software ntawm ob lub cuab yeej.

Piv txwv

Cov ntawv thov Network uas siv thaiv cov tswv yim/tso tawm yuav tsum siv xov. Cov piv txwv hauv qab no qhia txog cov neeg rau zaub mov tsawg thiab cov neeg siv khoom siv nrog cov xov. Kev sib tham hauv network yog qhov tseem ceeb tib yam li hauv kab lus tshwj tsis yog qee cov ntawv tau ua tiav, hloov mus rau hauv cov xov thiab qhov tshwj xeeb tau ua.

Server.java

ntshuam java.io. IOException; ntshuam java.net. InetAddress; ntshuam java.net. ServerSocket; ntshuam java.net. SocketException; ntshuam java.net. UnknownHostException; ntshuam java.util. ArrayList; ntshuam java.util. Collections; ntshuam java.util. List; /*** Chav kawm {@code Server} sawv cev rau lub server kawg-taw tes hauv lub network. {@code Server} ib zaug khi rau qee qhov IP * chaw nyob thiab chaw nres nkoj, tsim kev sib txuas nrog cov neeg siv khoom thiab muaj peev xwm sib txuas lus nrog lawv lossis txiav tawm lawv. *

* Chav kawm no yog xov xwm zoo. * * @version 1.0 * @see Client * @see Connection */ public class Server implements Runnable {private ServerSocket server; Cov npe ntiag tug kev sib txuas; ntiag tug xov xov; ntiag tug zaum kawg Cov khoom sib txuasLock = Lub Hom Phiaj tshiab (); /** * Tsim kom muaj {@code Server} uas cuam tshuam nrog cov neeg siv khoom ntawm lub npe tshwj xeeb thiab chaw nres nkoj nrog qhov tshwj xeeb * thov kom ntev tshaj plaws ntawm kab ntawm cov neeg siv khoom tuaj. * * @param tus tswv tsev chaw nyob siv. * @param chaw nres nkoj Tus lej naj npawb los siv. * @param backlog Thov kom ntev tshaj plaws ntawm kab ntawm cov neeg siv khoom tuaj. * @throws NetworkException Yog tias yuam kev tshwm sim thaum pib server. */ public Server (String host, int port, int backlog) cuam NetworkException {sim {server = tshiab ServerSocket (chaw nres nkoj, rov qab, InetAddress.getByName (host))); } ntes (UnknownHostException e) {pov NetworkException tshiab ("Tus tswv lub npe tsis tuaj yeem daws tau:" + tus tswv, e); } ntes (IllegalArgumentException e) {pov tshiab NetworkException ("Tus lej chaw nres nkoj yuav tsum nyob nruab nrab ntawm 0 thiab 65535 (suav nrog):" + chaw nres nkoj); } ntes (IOException e) {pov NetworkException tshiab ("Server tsis tuaj yeem pib.", e); } kev sib txuas = Collections.synchronizedList (tshiab ArrayList ()); xov = xov tshiab (qhov no); xov.start (); } /*** Ua tus {@code Server} uas cuam tshuam nrog cov neeg siv khoom ntawm lub npe tshwj xeeb lub npe thiab chaw nres nkoj. * * @param tus tswv tsev chaw nyob txhawm rau khi. * @param chaw nres nkoj Tus lej naj npawb los khi. * @throws NetworkException Yog tias yuam kev tshwm sim thaum pib server. */ public Server (String host, int port) cuam NetworkException {qhov no (host, port, 50); } /*** Mloog rau, lees paub thiab sau npe cov khoom sib txuas los ntawm cov neeg siv khoom. */ @Override public void run () {while (! Server.isClosed ()) {sim {connections.add (Kev Sib Txuas tshiab (server.accept ()))); } ntes (SocketException e) {yog (! e.getMessage (). sib npaug ("Socket kaw")) {e.printStackTrace (); }} ntes (NetworkException | IOException e) {e.printStackTrace (); }}} /*** Xa cov ntaub ntawv rau txhua tus neeg siv khoom sau npe. * * @param cov ntaub ntawv Cov ntaub ntawv xa. * @throws IllegalStateException Yog tias sau cov ntaub ntawv tau sim thaum server tsis nyob. * @throws IllegalArgumentException Yog tias cov ntaub ntawv xa yog tsis muaj. */ public void broadcast (Object data) {if (server.isClosed ()) {pov tshiab IllegalStateException tshiab ("Cov ntaub ntawv tsis xa, server nyob offline."); } yog (data == null) {pov tshiab IllegalArgumentException ("null data"); } synchronized (connectionsLock) {rau (Kev sib txuas sib txuas: kev sib txuas) {sim {connection.send (cov ntaub ntawv)); System.out.println ("Cov ntaub ntawv xa mus rau tus neeg siv tau zoo."); } ntes (NetworkException e) {e.printStackTrace (); }}}} /*** Xa cov lus sib txuas thiab tshem tawm cov neeg siv tshwj xeeb. * * @param kev sib txuas Client kom txiav tawm. * @throws NetworkException Yog tias yuam kev tshwm sim thaum kaw kev sib txuas. */ pej xeem tsis muaj dab tsi cuam tshuam (Kev sib txuas sib txuas) cuam NetworkException {yog (sib txuas.remove (txuas))) {connection.close (); }} /*** Xa lus xa tawm mus rau txhua tus neeg siv khoom, txiav tawm lawv thiab tshem tawm cov neeg rau zaub mov. */ pej xeem void ze () cuam NetworkException {synchronized (connectionsLock) {rau (Kev sib txuas sib txuas: sib txuas) {sim {connection.close (); } ntes (NetworkException e) {e.printStackTrace (); }}} connections.clear (); sim {server.close (); } ntes (IOException e) {pov NetworkException tshiab ("Yuam kev thaum kaw server."); } thaum kawg {thread.interrupt (); }} /*** Rov qab los lossis tsis yog tus server nyob online. * * @return Tseeb yog tias server nyob online. Cuav, lwm yam. */ pej xeem boolean isOnline () {rov qab! server.isClosed (); } /*** Rov qab los ntawm cov npe ntawm cov neeg siv khoom. */ pej xeem kev sib txuas getConnections () {synchronized (connectionsLock) {xa kev sib txuas.toArray (Kev Sib Txuas tshiab [txuas.size ()])); }}}

Client.java

ntshuam java.io. IOException; ntshuam java.net. Socket; ntshuam java.net. UnknownHostException; /*** Chav kawm {@code Client} sawv cev rau tus neeg siv kawg-taw tes hauv lub network. {@code Client}, ib zaug txuas nrog qee tus * server, tau lees tias tsuas yog tuaj yeem sib txuas lus nrog tus neeg rau zaub mov. Txawm hais tias tsis yog lwm tus neeg tau txais cov ntaub ntawv * nyob ntawm kev siv server. *

* Chav kawm no yog xov xwm zoo. * * @version 1.0 * @see Server * @see Connection */ public class Client {ntiag tug kev sib txuas sib txuas; /*** Tsim ib {@code Client} txuas nrog tus neeg rau zaub mov ntawm tus tswv tsev tshwj xeeb thiab chaw nres nkoj. * * @param tus tswv tsev chaw nyob txhawm rau khi. * @param chaw nres nkoj Tus lej naj npawb los khi. * @throws NetworkException Yog tias yuam kev tshwm sim thaum pib server. */ public Client (String host, int port) cuam NetworkException {sim {kev sib txuas = txuas tshiab (Socket tshiab (tus tswv tsev, chaw nres nkoj)); } ntes (UnknownHostException e) {pov NetworkException tshiab ("Tus tswv lub npe tsis tuaj yeem daws tau:" + tus tswv, e); } ntes (IllegalArgumentException e) {pov tshiab NetworkException ("Tus lej chaw nres nkoj yuav tsum nyob nruab nrab ntawm 0 thiab 65535 (suav nrog):" + chaw nres nkoj); } ntes (IOException e) {pov NetworkException tshiab ("Server tsis tuaj yeem pib.", e); }} /*** Xa cov ntaub ntawv rau lwm tog neeg. * * @param cov ntaub ntawv Cov ntaub ntawv xa. * @throws NetworkException Yog tias sau ntawv mus rau cov kwj tawm tsis ua tiav. * @throws IllegalStateException Yog tias sau cov ntaub ntawv raug sim thaum kev sib txuas raug kaw. * @throws IllegalArgumentException Yog tias cov ntaub ntawv xa yog tsis muaj. * @throws UnsupportedOperationException Yog hom kev txhawb nqa cov ntaub ntawv tau sim xa. */ pej xeem void xa (Cov ntaub ntawv cov ntaub ntawv) cuam NetworkException {connection.send (cov ntaub ntawv)); } /*** Xa cov lus sib txuas mus rau, thiab kaw kev sib txuas nrog, server. */ pej xeem tsis muaj dab tsi kaw () cuam NetworkException {connection.close (); } /*** Rov qab los yog tsis yog tus neeg siv tau txuas nrog lub server. * * @return Tseeb yog tias tus neeg siv txuas nrog. Cuav, lwm yam. */ pej xeem boolean isOnline () {rov qab txuas.isConnected (); } /*** Rov qab {@link Kev Sib Txuas} piv txwv ntawm tus neeg siv khoom. */ pej xeem Kev sib txuas getConnection () {rov txuas; }}

Kev sib txuas.java

ntshuam java.io. DataInputStream; ntshuam java.io. DataOutputStream; ntshuam java.io. IOException; ntshuam java.net. Socket; ntshuam java.net. SocketException; /** * Chav kawm {@code Kev Sib Txuas} sawv cev rau kev sib txuas los ntawm server rau cov neeg siv khoom lossis cov neeg siv khoom kawg hauv lub network * {@code Connection}, ib zaug txuas nrog, tuaj yeem sib pauv cov ntaub ntawv nrog lwm tog lossis ob tog, nyob ntawm ntawm tus neeg rau zaub mov * kev siv. *

* Chav kawm no yog xov xwm zoo. * * @version 1.0 * @see Server * @see Client */ public class Connection implements Runnable {private Socket socket; ntiag tug DataOutputStream tawm; ntiag tug DataInputStream hauv; ntiag tug xov xov; ntiag tug qhov kawg Object writeLock = Lub Hom Phiaj tshiab (); tus kheej kawg Lub hom phiaj readLock = Lub Hom Phiaj tshiab (); /*** Tsim {@code Kev Sib Txuas} siv cov kwj ntawm qhov tshwj xeeb {@link Qhov Rooj}. * * @param lub qhov (Socket socket) kom nqa cov ntws los ntawm.*/ kev sib txuas rau pej xeem (Qhov (socket)) cuam NetworkException {yog (qhov (= socket) = null) {pov tshiab IllegalArgumentException tshiab ("qhov ntsaws ntsaws"); } this.socket = qhov (socket); sim {tawm = tshiab DataOutputStream (socket.getOutputStream ()); } ntes (IOException e) {pov NetworkException tshiab ("Tsis tuaj yeem nkag mus rau cov zis tso tawm.", e); } sim {hauv = DataInputStream tshiab (socket.getInputStream ()); } ntes (IOException e) {pov NetworkException tshiab ("Tsis tuaj yeem nkag mus rau cov dej nkag.", e); } xov = xov tshiab (qhov no); xov.start (); } /*** Nyeem ntawv thaum txuas nrog lwm tus neeg tseem muaj txoj sia nyob. */ @Override public void run () {thaum (! Socket.isClosed ()) {sim {int identifier; byte bytes; synchronized (readLock) {tus cim = in.readInt (); int ntev = hauv.readInt (); yog (ntev> 0) {bytes = tshiab byte [ntev]; in.readFully (bytes, 0, bytes.length); } lwm {txuas ntxiv mus; }} hloov (tus cim) {case Identifier. INTERNAL: Txoj hlua hais kom ua = txoj hlua tshiab (bytes); yog (command.equals ("disconnect")) {if (! socket.isClosed ()) {System.out.println ("Disconnection pob ntawv tau txais."); sim {kaw (); } ntes (NetworkException e) {rov qab; }}} tawg; case Identifier. TEXT: System.out.println ("Cov ntawv tau txais:" + Txoj hlua tshiab (bytes)); tawg; default: System.out.println ("Cov ntaub ntawv tsis tau txais."); }} ntes (SocketException e) {yog (! e.getMessage (). sib npaug ("Socket kaw")) {e.printStackTrace (); }} ntes (IOException e) {e.printStackTrace (); }}} /*** Xa cov ntaub ntawv rau lwm tog neeg. * * @param cov ntaub ntawv Cov ntaub ntawv xa. * @throws NetworkException Yog tias sau ntawv mus rau cov kwj tawm tsis ua tiav. * @throws IllegalStateException Yog tias sau cov ntaub ntawv raug sim thaum kev sib txuas raug kaw. * @throws IllegalArgumentException Yog tias cov ntaub ntawv xa yog tsis muaj. * @throws UnsupportedOperationException Yog hom kev txhawb nqa cov ntaub ntawv tau sim xa. */ pej xeem void xa (Cov ntaub ntawv cov ntaub ntawv) cuam NetworkException {yog (socket.isClosed ()) {pov tshiab IllegalStateException tshiab ("Cov ntaub ntawv tsis xa, txuas tau raug kaw."); } yog (data == null) {pov tshiab IllegalArgumentException ("null data"); } int tus cim; byte bytes; yog tias (cov ntaub ntawv piv txwv ntawm txoj hlua) {tus cim = tus cim cim. EXT; bytes = ((Txoj hlua) cov ntaub ntawv).getBytes (); } lwm {pov tshiab UnsupportedOperationException ("Cov ntaub ntawv tsis txhawb:" + data.getClass ()); } sim {synchronized (writeLock) {out.writeInt (tus cim)); tawm.writeInt (bytes.length); tawm.write (bytes); tawm.flush (); }} ntes (IOException e) {pov NetworkException tshiab ("Cov ntaub ntawv xa tsis tau.", e); }} /*** Xa lus xa tawm mus rau, thiab kaw kev sib txuas nrog, lwm tog neeg. */ public void close () cuam NetworkException {yog (socket.isClosed ()) {pov tshiab IllegalStateException tshiab ("Kev twb kev txuas twb raug kaw lawm."); } sim {byte message = "disconnect".getBytes (); synchronized (writeLock) {out.writeInt (Identifier. INTERNAL); tawm.writeInt (message.length); tawm.write (lus); tawm.flush (); }} ntes (IOException e) {System.out.println ("Cov lus sib txuas tsis tuaj yeem xa."); } sim {synchronized (writeLock) {out.close (); }} ntes (IOException e) {pov NetworkException tshiab ("Yuam kev thaum kaw qhov txuas.", e); } thaum kawg {thread.interrupt (); }} /*** Rov qab los lossis tsis txuas nrog lwm tus neeg tseem muaj txoj sia nyob. * * @return Tseeb yog tias kev sib txuas tseem muaj sia. Cuav, lwm yam. */ public boolean isConnected () {return! socket.isClosed (); }}

Identifier.java

/** * Chav kawm {@code Identifier} muaj qhov siv los ntawm {@link Kev Sib Txuas} rau kev ua ntu zus thiab ua kom cov ntaub ntawv * xa mus thoob lub network. * * @version 1.0 * @see Connection * / public final class Identifier { / ** * Identifier for internal messages. */ pej xeem zoo li qub kawg INTERNAL = 1; /*** Tus cim rau cov ntawv nyeem. */ pej xeem zoo li qub zaum kawg int TEXT = 2; }

NetworkException.java

/*** Chav kawm {@code NetworkException} qhia txog qhov ua yuam kev cuam tshuam nrog network. * / pej xeem chav NetworkException ncua kev zam { / *** Tsim ib {@code NetworkException} nrog {@code null} raws li nws cov lus. * / pej xeem NetworkException () {} / *** Tsim ib {@code NetworkException} nrog cov lus tshwj xeeb. * * @param message Cov lus piav qhia txog qhov ua yuam kev. */ pej xeem NetworkException (Cov lus xov) {super (xov); } /*** Tsim ib {@code NetworkException} nrog cov lus tshwj xeeb thiab ua rau. * * @param message Cov lus piav qhia txog qhov ua yuam kev. * @param ua rau Qhov ua rau yuam kev. */ pej xeem NetworkException (Txoj hlua xov, Throwable ua rau) {super (lus, ua rau); } /*** Tsim ib {@code NetworkException} nrog rau qhov ua tshwj xeeb. * * @param ua rau Qhov ua rau yuam kev. */ pej xeem NetworkException (Throwable ua rau) {super (ua rau)); }}

UsageExample.java

/*** Chav kawm {@code UsageExample} qhia txog kev siv ntawm {@link Server} thiab {@link Client}. Cov piv txwv no siv * {@link Xov#pw (ntev)} kom ntseeg tau tias txhua ntu tau ua tiav vim tias pib sai thiab kaw ua rau qee qhov * ntu tsis ua. * * @version 1.0 * @see Server * @see Client */ public class UsageExample {pej xeem zoo li qub tsis muaj dab tsi tseem ceeb (Txoj hlua args) cuam tshuam kev zam {String host = "localhost"); int chaw nres nkoj = 10430; Neeg rau zaub mov neeg rau zaub mov = neeg rau zaub mov tshiab (tus tswv tsev, chaw nres nkoj); Client client = Client tshiab (tus tswv tsev, chaw nres nkoj); Xov.sleep (100L); client.send ("Nyob zoo."); server.broadcast ("Hav, phooj ywg!"); Xov.sleep (100L); server.disconnect (server.getConnections () [0]); // lossis client.close () txhawm rau txiav tawm ntawm cov neeg siv khoom sab server.close (); }}

Pom zoo: