lập trình socket giao thức udp

Upload: thinh-tran-van

Post on 08-Jan-2016

49 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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