Lập Trình Socket Giao Thức UDP

download Lập Trình Socket Giao Thức UDP

of 17

description

Lập Trình Socket Giao Thức UDP

Transcript of Lập Trình Socket Giao Thức UDP

1. Lp trnh Socket giao thc UDP1. Tng quan v giao thc UDP

TCP/IP l mt h cc giao thc c gi l h giao thc IP, bao gm bn tng. Cn nh rng TCP/IP khng phi l mt giao thc m thc s l mt h cc giao thc, v bao gm cc giao thc mc thp khc nh IP, TCP, v UDP. UDP nm tng giao vn, pha trn giao thc IP. Tng giao vn cung cp kh nng truyn tin gia cc mng thng qua cc gateway. N s dng cc a ch IP gi cc gi tin trn Internet hoc trn mng thng qua cc trnh iu khin thit b khc nhau. TCP v UDP l mt phn ca h giao thc TCP/IP; mi giao thc c nhng u v nhc im ring ca n.

Giao thc UDP l giao thc n gin, phi lin kt v cung cp dch v trn tng giao vn vi tc nhanh. N h tr lin kt mt-nhiu v thng c s dng thng xuyn trong lin kt mt-nhiu bng cch s dng cc datagram multicast v unicast.Giao thc IP l giao thc c bn ca Internet. TCP v UDP u l hai giao thc tng giao thc vn trn c s ca giao thc IP. Hnh di y ch ra cch nh x m hnh OSI nh x vo kin trc TCP/IP v h giao thc TCP/IP.

1.1. Mt s thut ng UDP

Trc khi kim tra xem giao thc UDP hot ng nh th no, chng ta cn lm quen vi mt s thut ng. Trong phn di y, chng ta s nh ngha mt s thut ng c bn c lin quan n giao thc UDP.. Packet

Trong truyn s liu, mt packet l mt dy cc s nh phn, biu din d liu v cc tn hiu iu khin, cc gi tin ny c chuyn i v chuyn ti ti host. Trong gi tin, thng tin c sp xp theo mt khun dng c th.. Datagram

Mt datagram l mt gi tin c lp, t cha, mang y d liu nh tuyn t ngun ti ch m khng cn thng tin thm.. MTU

MTU l vit tt ca Maximum Transmission Unit. MTU l mt c trng ca tng lin kt m t s byte d liu ti a c th truyn trong mt gi tin. Mt khc, MTU l gi d liu ln nht m mi trng mng cho trc c th truyn. V d, Ethernet c MTU c nh l 1500 byte. Trong UDP, nu kch thc ca mt datagram ln hn MTU, IP s thc hin phn on, chia datagram thnh cc phn nh hn (cc on), v vy mi on nh c kch thc nh hn MTU.. Port

UDP s dng cc cng nh x d liu n vo mt tin trnh c th ang chy trn mt my tnh. UDP nh ng i cho packet ti v tr xc nh bng cch s dng s hiu cng c xc nh trong header ca datagram. Cc cng c biu din bi cc s 16-bit, v th cc cng nm trong di t 0 n 65535. Cc cng cng c xem nh l cc im cui ca cc lin kt logic, v c chia thnh ba loi sau:. Cc cng ph bin: T 0 n 1023. Cc cng ng k: 1024 n 49151. Cc cng ng/dnh ring 49152 n 65535

Ch rng cc cng UDP c th nhn nhiu hn mt thng ip mt thi im. Trong mt s trng hp, cc dch v TCP v UDP c th s dng cng mt s hiu cng, nh 7 (Echo) hoc trn cng 23 (Telnet).UDP c cc cng thng dng sau:

. TTL (Time To Live)

Gi tr TTL cho php chng ta thit lp mt gii hn trn ca cc router m mt datagram c th i qua. Gi tr TTL ngn nga cc gi tin khi b kt trong cc vng lp nh tuyn v hn. TTL c khi to bi pha gi v gi tr c gim i bi mi router qun l datagram. Khi TTL bng 0, datagram b loi b.. Multicasting

Multicasting l phng php da trn chun c tnh cht m phn phi cc thng tin ging nhau n nhiu ngi dng. Multicasting l mt c trng chnh ca giao thc UDP. Multicasting cho php chng ta truyn tin theo kiu mt nhiu, v d gi tin hoc th in t ti nhiu ngi nhn, i pht thanh trn Internet, hoc cc chng trnh demo trc tuyn.

1.2. Hot ng ca giao thc UDP

Khi mt ng dng da trn giao thc UDP gi d liu ti mt host khc trn mng, UDP thm vo mt header c di 8 byte cha cc s hiu cng ngun v ch, cng vi tng chiu di d liu v thng tin checksum. IP thm vo header ca ring n vo u mi datagram UDP to ln mt datagram IP:

1.3. Cc nhc im ca giao thc UDP

So vi giao thc TCP, UDP c nhng nhc im sau:. Thiu cc tn hiu bt tay. Trc khi gi mt on, UDP khng gi cc tn hiu bt tay gia bn gi v bn nhn. V th pha gi khng c cch no bit datagram n ch hay cha. Do vy, UDP khng m bo vic d liu n ch hay cha.. S dng cc phin. TCP l hng lin kt, cc phin c duy tr gia cc host.. TCP s dng cc ch s phin (session ID) duy tr cc lin kt gia hai host. UDP khng h tr bt k phin no do bn cht phi lin kt ca n.. tin cy. UDP khng m bo rng ch c mt bn sao d liu ti ch. gi d liu ti cc h thng cui, UDP phn chia d liu thnh cc on nh. UDP khng m bo rng cc on ny s n ch ng th t nh chng c to ra ngun. Ngc li, TCP s dng cc s th t cng vi s hiu cng v cc gi tin xc thc thng xuyn, iu ny m bo rng cc gi tin n ch ng th t m n c to ra.. Bo mt. TCP c tnh bo mt cao hn UDP. Trong nhiu t chc, firewall v router cm cc gi tin UDP, iu ny l v cc hacker thng s dng cc cng UDP.. Kim sot lung. UDP khng c kim sot lung; kt qu l, mt ng dng UDP c thit k ti c th lm gim bng thng ca mng.

1.4. Cc u im ca UDP. Khng cn thit lp lin kt. UDP l giao thc phi lin kt, v th khng cn phi thit lp lin kt. V UDP khng s dng cc tn hiu handshaking, nn c th trnh c thi gian tr. chnh l l do ti sao DNS thng s dng giao thc UDP hn l TCP-DNS s chm hn rt nhiu khi dng TCP.. Tc . UDP nhanh hn so vi TCP. Bi v iu ny, nhiu ng dng thng c ci t trn giao thc UDP hn so vi giao thc TCP.. H tr hnh trng (Topology). UDP h tr cc lin kt 1-1, 1-n, ngc li TCP ch h tr lin kt 1-1.. Kch thc header. UDP ch c 8 byte header cho mi on, ngc li TCP cn cc header 20 byte, v vy s dng bng thng t hn.

Bng di y tng kt nhng s kc nhau gia hai giao thc TCP v UDP:

1.5. Khi no th nn s dng UDP

Rt nhiu ng dng trn Internet s dng UDP. Da trn cc u v nhc im ca UDP chng ta c th kt lun UDP c ch khi:. S dng cho cc phng thc truyn broadcasting v multicasting khi chng ta mun truyn tin vi nhiu host.. Kch thc datagram nh v trnh t on l khng quan trng. Khng cn thit lp lin kt. ng dng khng gi cc d liu quan trng. Khng cn truyn li cc gi tin. Bng thng ca mng ng vai tr quan trng

Vic ci t ng dng UDP trong Java cn c hai lp l DatagramPacket v DatagramSocket. DatagramPacket ng gi cc byte d liu vo cc gi tin UDP c gi l datagram v cho php ta m cc datagram khi nhn c. Mt DatagramSocket ng thi thc hin c hai nhim v nhn v gi gi tin. gi d liu, ta t d liu trong mt DatagramPacket v gi gi tin bng cch s dng DatagramSocket. nhn d liu, ta nhn mt i tng DatagramPacket t DatagramSocket v sau c ni dung ca gi tin.

UDP khng c bt k khi nim no v lin kt gia hai host. Mt socket gi tt c d liu ti mt cng hoc nhn tt c d liu t mt cng m khng cn quan tm host no gi. Mt DatagramSocket c th gi d liu ti nhiu host c lp hoc nhn d liu t nhiu host c lp. Socket khng dnh ring cho mt lin kt c th th no c nh trong giao thc TCP. Cc socket TCP xem lin kt mng nh l mt lung: ta gi v nhn d liu vi cc lung nhp v lung xut nhn c t socket. UDP khng cho php iu ny; ta phi lm vic vi tng gi tin. Tt c d liu c t trong datagram c gi i di dng mt gi tin. Gi tin ny cng c th nhn c bi mt nhm hoc cng c th b mt. Mt gi tin khng nht thit phi lin quan n gi tin tip theo. Cho trc hai gi tin, khng c cch no bit c gi tin no c gi trc v gi tin no c gi sau.Hng dn v h tr lp trnh JavaTng hp tnh nng mi trong Java 8Hng dn xy dng website s dng Spring Framework (Full)

Hng dn lp trnh JavaEE vi JSF FrameworkHng dn s dng Maven

Contact

- Skype:mr.datnh- Yahoo:datnhTr li km Trch dn 15-10-2014,11:15 PM#2mr.datnhAdministratorNgy tham giaJun 2013Bi vit911Thanks23Thanked 269 Times in 211 Posts2. Lp DatagramPacket

Cc datagram UDP a rt t thng tin vo datagram IP. Header UDP ch a tm byte vo header IP. Header UDP bao gm s hiu cng ngun v ch, chiu di ca d liu v header UDP, tip n l mt checksum ty chn. V mi cng c biu din bng hai byte nn tng s cng UDP trn mt host s l 65536. Chiu di cng c biu din bng hai byte nn s byte trong datagram ti a s l 65536 tr i tm 8 byte dnh cho phn thng tin header.

Trong Java, mt datagram UDP c biu din bi lp DatagramPacket:. public final class DatagramPacket extends Object

Lp ny cung cp cc phng thc nhn v thit lp cc a ch ngun, ch t header IP, nhn v thit lp cc thng tin v cng ngun v ch, nhn v thit lp di d liu. Cc trng thng tin cn li khng th truy nhp c t m Java thun ty.

DatagramPacket s dng cc constructor khc nhau ty thuc vo gi tin c s dng gi hay nhn d liu.

2.1. Cc constructor nhn datagram

Hai constructor to ra cc i tng DatagramSocket mi nhn d liu t mng:. public DatagramPacket(byte[] b, int length). public DatagramPacket(byte[] b, int offset, int length)

Khi mt socket nhn mt datagram, n lu tr phn d liu ca datagram trong vng m b bt u ti v tr b[0] v tip tc cho ti khi gi tin c lu tr hon ton hoc cho ti khi lu tr ht length byte. Nu s dng constructor th hai, th d liu c lu tr bt u t v tr b[offset]. Chiu di ca b phi nh hn hoc bng b.length-offset. Nu ta xy dng mt DatagramPacket c chiu di vt qu chiu di ca vng m th constructor s a ra ngoi l IllegalArgumentException. y l kiu ngoi l RuntimeException nn chng trnh ca ta khng cn thit phi n bt ngoi l ny.

V d:Xy dng mt DatagramPacket nhn d liu c kch thc ln ti 8912 byte123byte b[]=new byte[8912]; DatagramPacket dp=new DatagramPacket(b,b.length);

2.2. Constructor gi cc datagram

Bn constructor to cc i tng DatagramPacket mi gi d liu trn mng:. public DatagramPacket(byte[] b, int length, InetAddress dc, int port). public DatagramPacket(byte[] b, int offset, int length, InetAddress dc, int port). public DatagramPacket(byte[] b, int length, SocketAddress dc, int port). public DatagramPacket(byte[] b, int offset, int length, SocketAddress dc, int port)

Mi constructor to ra mt DatagramPacket mi c gi i ti mt host khc. Gi tin c in y d liu vi chiu di l length byte bt u t v tr offset hoc v tr 0 nu offset khng c s dng.

V d: gi i mt xu k t n mt host khc nh sau:12345678910111213141516String s = "This is an example of UDP Programming";byte[] b = s.getBytes();try {InetAddress dc = InetAddress.getByName("www.vnn.vn");int port = 7;DatagramPacket dp = new DatagramPacket(b, b.length, dc, port);// Gi gi tin}catch (IOException e) {System.err.println(e);}

Cng vic kh khn nht trong vic to ra mt i tng DatagramPacket chnh l vic chuyn i d liu thnh mt mng byte. on m trn chuyn i mt xu k t thnh mt mng byte gi d liu i

2.3. Cc phng thc nhn cc thng tin t DatagramPacket

DatagramPacket c su phng thc tm cc phn khc nhau ca mt datagram: d liu thc s cng vi mt s trng header. Cc phng thc ny thng c s dng cho cc datagram nhn c t mng.. public InetAddress getAddress()

Phng thc getAddress() tr v mt i tng InetAddress cha a ch IP ca host xa. Nu datagram c nhn t Internet, a ch tr v chnh l a ch ca my gi datagram (a ch ngun). Mt khc nu datagram c to cc b c gi ti my xa, phng thc ny tr v a ch ca host m datagram c nh a ch.. public int getPort()

Phng thc getPort() tr v mt s nguyn xc nh cng trn host xa. Nu datagram c nhn t Internet th cng ny l cng trn host gi gi tin i.. public SocketAddress()

Phng thc ny tr v mt i tng SocketAddress cha a ch IP v s hiu cng ca host xa.. public byte[] getData()

Phng thc getData() tr v mt mng byte cha d liu t datagram. Thng thng cn phi chuyn cc byte ny thnh mt dng d liu khc trc khi chng trnh x l d liu. Mt cch thc hin iu ny l chuyn i mng byte thnh mt i tng String s dng constructor sau y:. public String(byte[] buffer,String encoding)

Tham s u tin, buffer, l mng cc byte cha d liu t datagram. Tham s th hai cho bit cch thc m ha xu k t. Cho trc mt DatagramPacket dp c nhn t mng, ta c th chuyn i n thnh xu k t nh sau:1String s=new String(dp.getData(), "ASCII");

Nu datagram khng cha vn bn, vic chuyn i n thnh d liu Java kh khn hn nhiu. Mt cch tip cn l chuyn i mng byte c tr v bi phng thc getData() thnh lung ByteArrayInputStream bng cch s dng constructor ny:. public ByteArrayInputStream(byte[] b, int offset, int length)

b l mng byte c s dng nh l mt lung nhp InputStream. public int getLength()

Phng thc getLength() tr v s bytes d liu c trong mt datagram.. public getOffset()

Phng thc ny tr v v tr trong mng c tr v bi phng thc getData() m t d liu trong datagram xut pht.

Cc phng thc thit lp gi tr cho cc trng thng tin

Su constructor trn l to lp ra cc datagram. Tuy nhin, Java cung cp mt s phng thc thay i d liu, a ch ca my xa, v cng trn my xa sau khi datagram c to ra. Trong mt s trng hp vic s dng li cc DatagramPacket c sn s nhanh hn vic to mi cc i tng ny.. public void setData(byte[] b):

Phng thc ny thay i d liu ca datagram. public void setData(byte[] b, int offset, int length)

Phng thc ny a ra gii php gi mt khi lng d liu ln. Thay v gi ton b d liu trong mng, ta c th gi d liu trong tng on ca mng ti mi thi im.

V d:on m sau y s gi d liu theo tng on 512 byte:1234567891011121314151617181920int offset = 0;DatagramPacket dp = new DatagramPacket(b, offset, 512);int bytesSent = 0;while (bytesSent < b.length){ds.send(dp);bytesSent += dp.getLength();int bytesToSend = b.length - bytesSent;int size = (bytesToSend > 512) ? 512 : bytesToSend;dp.setData(b, byteSent, 512);}

. public void setAddress(InetAddress dc)

Phng thc setAddress() thay i a ch ca my m ta s gi gi tin ti. iu ny s cho php ta gi cng mt datagram n nhiu ni nhn.. public void setPort(int port)

Phng thc ny thay i s hiu cng gi ti ca gi tin.. pubic void setAddress(SocketAddress sa). public void setLength(int length)

Phng thc ny thay i s byte d liu c th t trong vng m.

3. Lp DatagramSocket

gi hoc nhn mt DatagramPacket, bn phi m mt DatagramSocket. Trong Java, mt datagram socket c to ra v c truy xut thng qua i tng DatagramSocket1public class DatagramSocket extends Object

Tt c cc datagram c gn vi mt cng cc b, cng ny c s dng lng nghe cc datagram n hoc c t trn cc header ca cc datagram s gi i. Nu ta vit mt client th khng cn phi quan tm n s hiu cng cc b l bao nhiu DatagramSocket c s dng gi v nhn cc gi tin UDP. N cung cp cc phng thc gi v nhn cc gi tin, cng nh xc nh mt gi tr timeout khi s dng phng php vo ra khng phong ta (non blocking I/O), kim tra v sa i kch thc ti a ca gi tin UDP, ng socket.

Cc phng thc:. void close(): ng mt lin kt v gii phng n khi cng cc b.. void connect(InetAddress remote_address, int remote_port): kt ni ti mt ti mt i tng InetAddress v mt port.. InetAddress getInetAddress(): Phng thc ny tr v a ch remote m socket kt ni ti, hoc gi tr null nu khng tn ti lin kt.. InetAddress getLocalAddress(): tr v a ch cc b. Int getSoTimeOut() tr v gi tr ty chn timeout ca socket. Gi tr ny xc nh thi gian m thao tc c s phong ta trc khi n a ra ngoi l InterruptedException. ch mc nh, gi tr ny bng 0, ch ra rng vo ra khng phong ta c s dng.. void receive(DatagramPacket dp) throws IOException: Phng thc c mt gi tin UDP v lu n dung trong packet xc nh.. void send(DatagramSocket dp) throws IOExceptio: Phng thc gi mt gi tin. void setSoTimeOut(int timeout): thit lp gi tr ty chn ca socket.

4. Nhn cc gi tin

Trc khi mt ng dng c th c cc gi tin UDP c gi bi cc my xa, n phi gn mt socket vi mt cng UDP bng cch s dng DatagramSocket, v to ra mt DatagramPacket s ng vai tr nh l mt b cha cho d liu ca gi tin UDP. Hnh v di y ch ra mi quan h gia mt gi tin UDP vi cc lp Java khc nhau c s dng x l n v cc ng dng thc t.

Khi mt ng dng mun c cc gi tin UDP, n gi phng thc DatagramSocket.receive(), phng thc ny sao chp gi tin UDP vo mt DatagramPacket xc nh. X l ni dung ni tin v tin trnh lp li khi cn.1234567891011121314DatagramPacket dp = new DatagramPacket(new byte[256], 256);DatagramSocket ds = new DatagramSocket(2000);boolean finished = false;while (!finished){ds.receive(dp);// X l gi tin}ds.close();

Khi x l gi tin ng dng phi lm vic trc tip vi mt mng byte. Tuy nhin nu ng dng l c vn bn th ta c th s dng cc lp t gi vo ra chuyn i gia mng byte v lung stream v reader. Bng cch gn kt lung nhp ByteArrayInputStream vi ni dung ca mt datagram v sau kt ni vi mt kiu lung khc, khi bn c th truy xut ti ni dung ca gi UDP mt cch d dng. Rt nhiu ngi lp trnh thch dng cc lung vo ra I/O x l d liu, bng cch s dng lung DataInputStream hoc BufferedReader truy xut ti ni dung ca cc mng byte.

V d: gn kt mt lung DataInputStream vi ni dung ca mt DatagramPacket, ta s dng on m sau:123456ByteArrayInputStream bis=new ByteArrayInputStream(dp.getData()); DataInputStream dis=new DataInputStream(bis); //c ni dung ca gi tin UDP

5. Gi cc gi tin

Lp DatagramSocket cng c s dng gi cc gi tin. Khi gi gi tin, ng dng phi to ra mt DatagramPacket, thit lp a ch v thng tin cng, v ghi d liu cn truyn vo mng byte. Nu mun gi thng tin phc p th ta cng bit a ch v s hiu cng ca gi tin nhn c. Mi khi gi tin sn sng gi, ta s dng phng thc send() ca lp DatagramSocket gi gi tin i.

123456789101112131415161718192021222324252627// Socket lng nghe cc gi tin n trn cng 2000DatagramSocket socket = new DatagramSocket(2000);DatagramPacket packet = new DatagramPacket(new byte[256], 256);packet.setAddress(InetAddress.getByName("somehost" ));packet.setPort(2000);boolean finished = false;while (!finished) {// Ghi d liu vo vng m buffer// socket.send(packet);// Thc hin hnh ng no , chng hn nh c gi tin khci hoc// kim tra xemor// cn gi tin no cn gi i hay khng// }

Hng dn v h tr lp trnh JavaTng hp tnh nng mi trong Java 8Hng dn xy dng website s dng Spring Framework (Full)

Hng dn lp trnh JavaEE vi JSF FrameworkHng dn s dng Maven

Contact

- Skype:mr.datnh- Yahoo:datnhTr li km Trch dn 15-10-2014,11:23 PM#3mr.datnhAdministratorNgy tham giaJun 2013Bi vit911Thanks23Thanked 269 Times in 211 PostsV d minh ha giao thc UDP minh ha cc gi tin UDP c gi v nhn nh th no, chng ta s vit, bin dch v chy ng dng sau. Vit chng trnh theo m hnh Client/Server :

Client thc hin cc thao tc sau y:. Client gi mt xu k t do ngi dng nhp t bn phm cho server. Client nhn thng tin phn hi tr li t Server v hin th thng tin trn mn hnh

Server thc hin cc thao tc sau:. Server nhn xu k t do client gi ti v in ln mn hnh. Server bin i xu k t thnh ch hoa v gi tr li cho Client

Server1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import java.net.*;import java.io.*;public class UDPClient {public final static int CONG_MAC_DINH = 9;public static void main(String args[]){String hostname;int port = CONG_MAC_DINH;if (args.length > 0) {hostname = args[0];try {port = Integer.parseInt(args[1]);}catch (Exception e) {}}else{hostname = "127.0.0.1";}try {InetAddress dc = InetAddress.getByName(hostname);BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));DatagramSocket ds = new DatagramSocket(port);while (true) {String line = userInput.readLine();if (line.equals("exit"))break;byte[] data = line.getBytes();DatagramPacket dp = new DatagramPacket(data, data.length, dc,port);ds.send(dp);dp.setLength(65507);ds.receive(dp);ByteArrayInputStream bis = new ByteArrayInputStream(dp.getData());BufferedReader dis = new BufferedReader(new InputStreamReader(bis));System.out.println(dis.readLine());}}catch (UnknownHostException e) {System.err.println(e);}catch (IOException e) {System.err.println(e);}}}

1234567891011121314151617181920212223242526272829303132333435363738import java.net.*;import java.io.*;public class UDPServer {public final static int CONG_MAC_DINH = 9;public static void main(String args[]) {int port = CONG_MAC_DINH;try {port = Integer.parseInt(args[1]);} catch (Exception e) {}try {DatagramSocket ds = new DatagramSocket(port);DatagramPacket dp = new DatagramPacket(new byte[65507], 65507);while (true) {ds.receive(dp);ByteArrayInputStream bis = new ByteArrayInputStream(dp.getData());BufferedReader dis = new BufferedReader(new InputStreamReader(bis));String s = dis.readLine();System.out.println(s);s.toUpperCase();dp.setData(s.getBytes());dp.setLength(s.length());dp.setAddress(dp.getAddress());dp.setPort(dp.getPort());ds.send(dp);}} catch (UnknownHostException e) {System.err.println(e);} catch (IOException e) {System.err.println(e);}}}

Chng trnh Client/Server s dng a tuyn on1234567891011121314151617181920212223242526272829303132import java.net.*;import java.io.*;public abstract class UDPServer extends Thread {private int bufferSize;protected DatagramSocket ds;public UDPServer(int port, int bufferSize) throws SocketException {this.bufferSize = bufferSize;this.ds = new DatagramSocket(port);}public UDPServer(int port) throws SocketException {this(port, 8192);}public void run() {byte[] buffer = new byte[bufferSize];while (true) {DatagramPacket dp = new DatagramPacket(buffer, buffer.length);try {ds.receive(dp);this.respond(dp);} catch (IOException e) {System.err.println(e);}}}public abstract void respond(DatagramPacket req);}

Server Echo12345678910111213141516171819202122232425262728293031import java.net.*;import java.io.*;public class UDPEchoServer extends UDPServer {public final static int DEFAULT_PORT = 7;public UDPEchoServer() throws SocketException {super(DEFAULT_PORT);}public void respond(DatagramPacket dp) {try {DatagramPacket outdp = new DatagramPacket(dp.getData(),dp.getLength(), dp.getAddress(), dp.getPort());ds.send(outdp);} catch (IOException e) {System.err.println(e);}}public static void main(String[] args) {try {UDPServer server = new UDPEchoServer();server.start();System.out.println("Server dang da san sang lang nghe lien ket");} catch (SocketException e) {System.err.println(e);}}}

Client123456789101112131415161718192021222324252627282930313233import java.net.*;import java.io.*;public class ReceiverThread extends Thread {private DatagramSocket ds;private boolean stopped = false;public ReceiverThread(DatagramSocket ds) throws SocketException {this.ds = ds;}public void halt() {this.stopped = true;}public void run() {byte buffer[] = new byte[65507];while (true) {if (stopped)return;DatagramPacket dp = new DatagramPacket(buffer, buffer.length);try {ds.receive(dp);String s = new String(dp.getData(), 0, dp.getLength());System.out.println(s);Thread.yield();} catch (IOException e) {System.err.println(e);}}}}

12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.net.*;import java.io.*;public class SenderThread extends Thread {private InetAddress server;private DatagramSocket ds;private boolean stopped = false;private int port;public SenderThread(InetAddress address, int port) throws SocketException {this.server = address;this.port = port;this.ds = new DatagramSocket();this.ds.connect(server, port);}public void halt() {this.stopped = true;}public DatagramSocket getSocket() {return this.ds;}public void run() {try {BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));while (true) {if (stopped)return;String line = userInput.readLine();if (line.equals("exit"))break;byte[] data = line.getBytes();DatagramPacket dp = new DatagramPacket(data, data.length,server, port);ds.send(dp);Thread.yield();}} catch (IOException e) {System.err.println(e);}}}

Client Echo12345678910111213141516171819202122232425262728import java.net.*;import java.io.*;public class UDPEchoClient {public final static int DEFAULT_PORT = 7;public static void main(String[] args) {String hostname="localhost";int port= DEFAULT_PORT;if(args.length>0) {hostname=args[0];}try{InetAddress ia=InetAddress.getByName(args[0]);SenderThread sender=new SenderThread(ia,DEFAULT_PORT);sender.start();ReceiverThread receiver=new ReceiverThread(sender.getSocket());receiver.start();}catch(UnknownHostException e){System.err.println(e);}catch(SocketException e) {System.err.println(e);}}}

Hng dn v h tr lp trnh JavaTng hp tnh nng mi trong Java 8Hng dn xy dng website s dng Spring Framework (Full)

Hng dn lp trnh JavaEE vi JSF FrameworkHng dn s dng Maven

Contact

- Skype:mr.datnh- Yahoo:datnhTr li km Trch dn 15-10-2014,11:24 PM#4mr.datnhAdministratorNgy tham giaJun 2013Bi vit911Thanks23Thanked 269 Times in 211 Posts7. Kt lun

Trong chng ny, chng ta tho lun nhng khi nim cn bn v giao thc UDP v so snh n vi giao thc TCP. Chng ta cp ti vic ci t cc chng trnh UDP trong Java bng cch s dng hai lp DatagramPacket v DatagramSocket. Mt s chng trnh mu cng c gii thiu bn c tham kho v gip hiu su hn v cc vn l thuyt.Hng dn v h tr lp trnh JavaTng hp tnh nng mi trong Java 8Hng dn xy dng website s dng Spring Framework (Full)

Hng dn lp trnh JavaEE vi JSF FrameworkHng dn s dng Maven

Contact

- Skype:mr.datnh- Yahoo:datnh