您好,欢迎您访问我们燿动吧 – 知识分享,快乐你我,燿动青春!

燿动吧 – 知识分享,快乐你我,燿动青春

                                          您现在的位置是:燿动吧 > 项目中心 >

                                          UDP DUP超时UPD端口UDP到底有没有状态

                                          文章来源:又松 时间:2025-03-11

                                          尔之前写过1个示例,1个复杂的UDP效劳端战客户端示例 http://cuisuqiang.iteye.com/blog/1543190,内部写过,即使您把本身看成客户端,那末客户端是能够指定本身的端心来收数的。别的,前面有讨论讯问对于乞请超时的题目,是2012-10-18问的,而后1年后的本日,尔归复他了。尔归复的内乱容是ds.setSoTimeout(5000);便为支数超每每间,假如没有树立,那便是等候,比电瞅剧内中恋爱片皆良久的等候,并且了局是一致的,皆是把本身等逝世了便没有再等了。然则那个超经常间没有能看成是您那个哀求的超经常间,请注重那个观点,原因那个超时不过用于符号那段韶华不从收集中获得数据,然则便使获得数据了,那也没有必定是您的,那个底下观示例便会晓畅。而后便是端心题目,下面也道了您能够本身指定端心,也能够是把本身看成客户端,须要收收数据时便创造1个毗连对于象而后收收数据,如许端心便是动静的。道理便是道,只需DatagramSocket对于象不被从头始初化或者消散,那末内地挨启的那个UDP端心便没有会闭关。而后便是UDP形态的题目,实在起初便也有1篇作品了,UDP编程 UDP毗连对于象的分解战应用http://cuisuqiang.iteye.com/blog/1553989。无形态是道那个毗连不形态,鬼晓得他究竟有无效劳端,鬼也没有晓得便算谁人效劳端正在他究竟逝世了不。然则对当地来讲,倘使您的DatagramSocket对于象继续永存,那末您的当地端心便是有形态的,他是活的。而后干1个示例:

                                          packagetest;importjava.io.*;importjava.net.*;importjava.util.Arrays;/***UDP客户端顺序,用于对于效劳端收收数据,并接纳效劳真个归应疑息*/publicclassUdpClientSocket{privatebyte[]buffer=newbyte[1024];privatestaticDatagramSocketds=null;/***尝试客户端收包战接纳归应疑息的办法*/publicstaticvoidmain(String[]args)throwsException{UdpClientSocketclient=newUdpClientSocket();StringserverHost="127.0.0.1";intserverPort=10002;client.send(serverHost,serverPort,newbyte[]{1,2,3,4,5});while(true){byte[]bt=client.receive();if(null!=bt&&bt.length>0)System.out.println("支到数据:"+Arrays.toString(bt));Thread.sleep(1000);}}/***机关函数,创设UDP客户端*/publicUdpClientSocket()throwsException{ds=newDatagramSocket(8899);//国定腹地端心行为客户端ds.setSoTimeout(5000);}/***背指定的效劳端收收数据疑息*/publicfinalvoidsend(finalStringhost,finalintport,finalbyte[]bytes)throwsIOException{DatagramPacketdp=newDatagramPacket(bytes,bytes.length,InetAddress.getByName(host),port);ds.send(dp);}/***接纳从指定的效劳端发还的数据*/publicfinalbyte[]receive()throwsException{try{DatagramPacketdp=newDatagramPacket(buffer,buffer.length);ds.receive(dp);byte[]data=newbyte[dp.getLength()];System.arraycopy(dp.getData(),0,data,0,dp.getLength());returndata;}catch(Exceptione){e.printStackTrace();returnnull;}}}

                                          运转无间报错:

                                          java.net.SocketTimeoutException:Receivetimedoutatjava.net.PlainDatagramSocketImpl.receive0(NativeMethod)atjava.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)atjava.net.DatagramSocket.receive(DatagramSocket.java:712)attest.UdpClientSocket.receive(UdpClientSocket.java:46)attest.UdpClientSocket.main(UdpClientSocket.java:20)java.net.SocketTimeoutException:Receivetimedoutatjava.net.PlainDatagramSocketImpl.receive0(NativeMethod)atjava.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)atjava.net.DatagramSocket.receive(DatagramSocket.java:712)attest.UdpClientSocket.receive(UdpClientSocket.java:46)attest.UdpClientSocket.main(UdpClientSocket.java:20)

                                          应用TCPUDPDbg背8899收收数据,能够支到:

                                          支到数据:[16,17,18,19,20]

                                          那里示例中依然写亮1.腹地端心是88992.支数超不时间是5秒3.背当地10002端心收收了1组数据,鬼晓得有无支到4.不息获得要地端心8899支到的UDP数据而后涌现1.收收数据不报错2.从来报错支数超时3.应用TCPUDPDbg背8899收收数据也许支到概括:1.UDP能指定支数超时,然则每一个苦求的超时须要本身操纵2.UDP能够国定要地端心收数,并且那个端心能够有形态存活3.UDP不形态,然则当地能够有

                                          推举您浏览更多相关于“ 超时客户端UDPDatagramSocket效劳端 ”的作品