Java程序开发教学课件:13-网络通信

上传人:cl****1 文档编号:570033602 上传时间:2024-08-01 格式:PPT 页数:51 大小:688KB
返回 下载 相关 举报
Java程序开发教学课件:13-网络通信_第1页
第1页 / 共51页
Java程序开发教学课件:13-网络通信_第2页
第2页 / 共51页
Java程序开发教学课件:13-网络通信_第3页
第3页 / 共51页
Java程序开发教学课件:13-网络通信_第4页
第4页 / 共51页
Java程序开发教学课件:13-网络通信_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《Java程序开发教学课件:13-网络通信》由会员分享,可在线阅读,更多相关《Java程序开发教学课件:13-网络通信(51页珍藏版)》请在金锄头文库上搜索。

1、Java程序开发程序开发网络通信网络通信重庆大学计算机学院主要内容主要内容n n协议,主机,端口协议,主机,端口n nURLConnectionURLConnectionn nSocketSocket通信通信n n多客户机制多客户机制n n扩展:扩展:ftpftp,httphttp等下载和通信程序等下载和通信程序网络基础知识网络基础知识n nIPIP地址地址如:如:166.111.136.3,166.111.52.80166.111.136.3,166.111.52.80n n主机名主机名(hostname)(hostname)如:如:n n端口号端口号(portnumber)(portnum

2、ber)如如:80:80,2121,2323,2525n n服务类型服务类型(service)(service)http,telnet,ftp,smtphttp,telnet,ftp,smtp两类传输协议两类传输协议n nTCP(TransportControlProtocol)TCP(TransportControlProtocol)面向连接的能够提供可靠的流式数据传输的协议。面向连接的能够提供可靠的流式数据传输的协议。类似于打电话的过程。类似于打电话的过程。URL,URLConnection,Socket,ServerSocketURL,URLConnection,Socket,Serve

3、rSocket等等类都使用类都使用TCPTCP协议进行网络通讯。协议进行网络通讯。n nUDP(UserDatagramProtocol)UDP(UserDatagramProtocol)非面向连接的提供不可靠的数据包式的数据传输的非面向连接的提供不可靠的数据包式的数据传输的协议。类似于从邮局发送信件的过程。协议。类似于从邮局发送信件的过程。DatagramPacket,DatagramSocket,DatagramPacket,DatagramSocket,MulticastSocketMulticastSocket等类使用等类使用UDPUDP协议进行网络通讯。协议进行网络通讯。URL类类n

4、 nURL(UniformResourceLocator)URL(UniformResourceLocator)一致资源定位器的简称,它表示一致资源定位器的简称,它表示InternetInternet上某一上某一资源的地址。资源的地址。n nURLURL的组成的组成protocol:resourceNameprotocol:resourceName协议名指明获取资源所使用的传输协议,如协议名指明获取资源所使用的传输协议,如httphttp、ftpftp、gophergopher、filefile等,资源名则应该是资源的完等,资源名则应该是资源的完整地址,包括主机名、端口号、文件名或文件内整地址

5、,包括主机名、端口号、文件名或文件内部的一个引用。部的一个引用。URL例子例子n nhttp:/ nhttp:/ nhttp:/:80/Gamelan/network.http:/:80/Gamelan/network.html#BOTTOMhtml#BOTTOM构造构造URL对象对象publicURL(Stringspec)publicURL(Stringspec)URLURLurlBaseurlBase=newURL(=newURL(“ “http:/http:/ /” ”););publicURL(URLcontext,Stringspec)publicURL(URLcontext,St

6、ringspec)URLURLibmibm=newURL(=newURL(“ “http:/http:/ URL myURL = new URL(. . .) catch (MalformedURLException e) . . . / exception handler code here . . .获取获取URL对象属性对象属性n npublicStringgetProtocol()publicStringgetProtocol()n npublicStringgetHost()publicStringgetHost()n npublicStringgetPort()publicStri

7、nggetPort()n npublicStringgetFile()publicStringgetFile()n npublicStringgetRef()publicStringgetRef()类类InetAddress n nInetAddressInetAddress类是类是IPIP地址封装类地址封装类nInetAddress getByName(String hostname)nInetAddress getByAddress(byte addr) nString getHostAddress()nString getHostName() 获得有关获得有关IPIP地址的各种属性地址的

8、各种属性通过通过URL读取读取WWW信息信息publicclasspublicclassURLReaderURLReader publicstaticvoidmain(Stringpublicstaticvoidmain(Stringargsargs)throws)throwsExceptionExceptionURLURLcqucqu=newURL(=newURL(“ “http:/http:/ (cqu.cqu.openStreamopenStream();();StringStringinputLineinputLine; ;while(while(inputLineinputLine=

9、in.readLinein.readLine()!=null)()!=null)System.out.printlnSystem.out.println( (inputLineinputLine); );in.closein.close();(); 使用使用URLConnection读写读写WWW资资源源trytryURLcqu=newURLcqu=newURL(http:/ URLConnectionnURLConnectionntctc=cqu.openConnection();cqu.openConnection(); catchcatch(MalformedURLException(M

10、alformedURLExceptione)e) /newnewURL()failedURL()failed. catchcatch (IOException(IOException e)e) /openConnection()failedopenConnection()failed. n n得到得到URLConnectionURLConnection对象之后,可以用如下方对象之后,可以用如下方法得到相应的输入法得到相应的输入/ /输出流:输出流:ngetInputStream( )ngetOutputStream( )之后就可以读写输入/输出流,完成数据的读写。socket通讯通讯n n网络

11、上的两个程序通过一个双向的通讯连接实现数网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个据的交换,这个双向链路的一端称为一个socketsocket。n nsocketsocket通常用来实现客户方和服务方的连接。通常用来实现客户方和服务方的连接。Client-server and ServiceSocket CommunicationSocket 编程模型编程模型new Socketnew SocketServerSocketClientServerRead/Write DataRead/Write DataClose SocketClose Socketwa

12、itrequestconnectacceptsendI/O streamreceivereceivesendclosedisconnectclose创建创建Socket和和ServerSocketn nSocket(InetAddressaddress,intport);Socket(InetAddressaddress,intport);n nSocket(InetAddressSocket(InetAddress address,address, intint port,port,booleanstream);booleanstream);n nSocket(Stringhost,intp

13、ort);Socket(Stringhost,intport);n nSocket(StringSocket(String host,host, intint port,port, booleanbooleanstream);stream);n nServerSocket(intport);ServerSocket(intport);n nServerSocket(intport,intcount);ServerSocket(intport,intcount);客户端客户端Socket的建立的建立trytrySocketsocket=newSocket(Socketsocket=newSock

14、et(” ”127.0.0.1,2000);127.0.0.1,2000);catch(IOExceptione)catch(IOExceptione)System.out.println(Error:+e);System.out.println(Error:+e); 服务器端服务器端Socket的建立的建立ServerSocketserver=null;ServerSocketserver=null;trytryserver=newServerSocket(2000);server=newServerSocket(2000);catch(IOExceptione)catch(IOExcept

15、ione)System.out.println(cannotlistento:+e);System.out.println(cannotlistento:+e); Socketsocket=null;Socketsocket=null;trytrysocket=server.accept();socket=server.accept();catch(IOExceptione)catch(IOExceptione)System.out.println(Error:+e);System.out.println(Error:+e); 打开输入打开输入/输出流输出流PrintStreamos=newP

16、rintStream(newBufferedOutputStreamPrintStreamos=newPrintStream(newBufferedOutputStream( (socket.getOutputStream()socket.getOutputStream(););DataInputStreamis=newDataInputStreamis=newDataInputStream(socket.getInputStream();PrintWriterout=newPrintWriterout=newPrintWriter(socket.getOutputStream(),true)

17、;BufferedReaderin=newBufferedReaderin=newBufferedReader(new InputStreamReader(socket.getInputStream();关闭关闭socketn nos.close();os.close();n nis.close();is.close();n nsocket.close();socket.close();n n注意关闭的顺序注意关闭的顺序例例 客户端程序客户端程序importjava.io.*;importjava.io.*;.*;.*;publicclassTalkClientpublicclassTalkC

18、lientpublicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)trytrySocketsocket=newSocket(Socketsocket=newSocket(“ “127.0.0.1127.0.0.1” ”,4700);,4700);BufferedReadersin=newBufferedReader(newBufferedReadersin=newBufferedReader(newInputStreamReader(System.in);InputStreamReader(System.in);Print

19、Writeros=newPrintWriteros=newPrintWriter(socket.getOutputStream();PrintWriter(socket.getOutputStream();BufferedReaderis=newBufferedReader(newBufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream();InputStreamReader(socket.getInputStream();Stringreadline;Stringreadline;readlin

20、e=sin.readLine();readline=sin.readLine();while(!readline.equals(while(!readline.equals(“ “byebye” ”) )os.println(readline);os.println(readline);os.flush();os.flush();System.out.println(System.out.println(“ “Client:Client:” ”+readline);+readline);System.out.println(System.out.println(“ “Server:Server

21、:” ”+is.readLine();+is.readLine();readline=sin.readLine();readline=sin.readLine(); os.close();os.close();is.close();is.close();socket.close();socket.close();catch(Exceptione)catch(Exceptione)System.out.println(System.out.println(“ “ErrorError” ”+e);+e); 服务器端程序服务器端程序: :importjava.io.*;importjava.io.*

22、;.*;.*;publicclassTalkServerpublicclassTalkServerpublicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)trytryServerSocketserver=null;ServerSocketserver=null;trytryserver=newServerSocket(4700);server=newServerSocket(4700);catch(Exceptione)catch(Exceptione)System.out.println(System.out.print

23、ln(“ “cannotlistento:cannotlistento:” ”+e);+e);Socketsocket=null;Socketsocket=null;trytrysocket=server.accept();socket=server.accept();catch(Exceptione)catch(Exceptione)System.out.println(System.out.println(“ “Error.Error.” ”+e);+e);Stringreadline;Stringreadline;BufferedReaderis=newBufferedReader(ne

24、wBufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream();InputStreamReader(socket.getInputStream();PrintWriteros=newPrintWriter(socket.getOutputStream();PrintWriteros=newPrintWriter(socket.getOutputStream();BufferedReadersin=newBufferedReader(newBufferedReadersin=newBufferedR

25、eader(newInputStreamReader(System.in);InputStreamReader(System.in);System.out.println(System.out.println(“ “Client:Client:” ”+is.readLine();+is.readLine();readline=sin.readLine();readline=sin.readLine();while(!readline.equals(while(!readline.equals(“ “byebye” ”) ) os.println(readline);os.println(rea

26、dline);os.flush();os.flush();System.out.println(System.out.println(“ “Server:Server:” ”+readline);+readline);System.out.println(System.out.println(“ “Client:Client:” ”+is.readLine();+is.readLine();readline=sin.readLine();readline=sin.readLine(); os.close();os.close();is.close();is.close();socket.clo

27、se();socket.close();server.close();server.close();catch(Exceptione)catch(Exceptione)System.out.println(System.out.println(“ “Error:Error:” ”+e);+e); 运行结果运行结果Server:hello!Server:hello!Client:hello!Client:hello!Server:howareyou?Server:howareyou?Client:Iamfine,thankyou!Client:Iamfine,thankyou!Client:by

28、e.Client:bye.Server:bye.Server:bye.多客多客户户机制机制Thread ASocketThread BSocketServerSocketClient AClient BClient CThread CSocket服务器端程序服务器端程序:MultiTalkServer.java:MultiTalkServer.javatrytry serverSocket = serverSocket = newnew ServerSocket(4700); ServerSocket(4700); catchcatch (IOException e) (IOException

29、 e) System.System.outout.println(.println(Could not Could not listenlisten););System.System.exitexit(-1);(-1); whilewhile (listening) (listening) newnew ServerThread(serverSocket.accept(), ServerThread(serverSocket.accept(), clientnum).start();clientnum).start();clientnum+;clientnum+; 程序程序ServerThre

30、ad.javaServerThread.javaimportjava.io.*;importjava.io.*;.*;.*;publicclassServerThreadextendsThreadpublicclassServerThreadextendsThreadSocketsocket=null;Socketsocket=null;staticintclientnum;staticintclientnum;publicServerThread(Socketsocket,intnum)publicServerThread(Socketsocket,intnum)this.socket=so

31、cket;this.socket=socket;clientnum=num+1;clientnum=num+1; publicvoidrun()publicvoidrun()trytryStringline;Stringline;BufferedReaderis=newBufferedReader(newBufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream();InputStreamReader(socket.getInputStream();PrintWriteros=newPrintWri

32、ter(socket.getOutputStream();PrintWriteros=newPrintWriter(socket.getOutputStream();BufferedReadersin=newBufferedReader(newBufferedReadersin=newBufferedReader(newInputStreamReader(System.in);InputStreamReader(System.in);System.out.println(System.out.println(“ “ClientClient” ”+clientnum+clientnum+” ”:

33、 :” ”+is.readLine();is.readLine();line=sin.readLine();line=sin.readLine();while(!line.equals(while(!line.equals(“ “byebye” ”) ) os.println(line);os.println(line);os.flush();os.flush(); System.out.println(System.out.println(“ “Server:Server:” ”+line);+line);System.out.println(System.out.println(“ “Cl

34、ient:Client:” ”+clientnum+clientnum+“ “: :” ”is.readLine();is.readLine();line=sin.readLine();line=sin.readLine(); os.close();os.close();is.close();is.close();socket.close();socket.close();catch(Exceptione)catch(Exceptione)System.out.println(System.out.println(“ “Error:Error:” ”+e);+e); server.close(

35、);server.close();catch(Exceptione)catch(Exceptione)System.out.println(System.out.println(“ “Error:Error:” ”+e);+e); 数据报通信数据报通信n nTCP(TransportControlProtocol)面向连接的能够提供可靠的流式数据传输的协议。面向连接的能够提供可靠的流式数据传输的协议。类似于打电话的过程。类似于打电话的过程。URL,URLConnection,Socket,ServerSocketURL,URLConnection,Socket,ServerSocket等等类都

36、使用类都使用TCPTCP协议进行网络通讯。协议进行网络通讯。n nUDP(UserDatagramProtocol)非面向连接的提供不可靠的数据包式的数据传输的非面向连接的提供不可靠的数据包式的数据传输的协议。类似于从邮局发送信件的过程。协议。类似于从邮局发送信件的过程。DatagramPacket,DatagramSocket,DatagramPacket,DatagramSocket,MulticastSocketMulticastSocket等类使用等类使用UDPUDP协议进行网络通讯。协议进行网络通讯。比较比较通信方式协议是否需要连接可靠性数据量应用数据报通信UDP无连接,每个报包括源

37、地址和目标地址不可靠,数据会丢失64KB之内时间服务,ping程序流式通信TCP需要连接可靠,数据不会丢失大量数据http服务,Telnet服务,Ftp服务数据报通信数据报通信n nTCPTCP有建立时间有建立时间n nUDPUDP传输有大小限制传输有大小限制:64K:64K以内以内n nTCPTCP的应用的应用:Telnet,ftp:Telnet,ftpn nUDPUDP的应用的应用:ping:ping数据报通信数据报通信n nDatagramSocket()DatagramSocket()n nDatagramSocket(intport)DatagramSocket(intport)n

38、nDatagramPacket(byteibuf,intilengthDatagramPacket(byteibuf,intilength) )n nDatagramPacket(byteibuf,intilength,DatagramPacket(byteibuf,intilength,InetAddressiaddr,intiport)InetAddressiaddr,intiport); ;数据报通信数据报通信n n收数据报收数据报: :DatagramPacketpacket=newDatagramPacketDatagramPacketpacket=newDatagramPacket

39、(buf,256);(buf,256);socket.receive(packet);socket.receive(packet);n n发数据报发数据报DatagramPacketpacket=newDatagramPacketDatagramPacketpacket=newDatagramPacket(buf,buf.length,address,port);(buf,buf.length,address,port);socket.send(packet);socket.send(packet);客户方程序客户方程序QuoteClient.javaQuoteClient.javaimpor

40、tjava.io.*;importjava.io.*;.*;.*;importjava.util.*;importjava.util.*;publicclassQuoteClientpublicclassQuoteClientpublicstaticvoidmain(Stringargs)throwspublicstaticvoidmain(Stringargs)throwsIOExceptionIOExceptionif(args.length!=1)if(args.length!=1)System.out.println(System.out.println(“ “Usage:javaQu

41、oteClientUsage:javaQuoteClient” ”); );return;return; DatagramSocketsocket=newDatagramSocklet();DatagramSocketsocket=newDatagramSocklet();/sendrequest/sendrequestBytebuf=newbyte256;Bytebuf=newbyte256;InetAddressaddress=InetAddress.getByName(argsInetAddressaddress=InetAddress.getByName(args0);0);Datag

42、ramPacketpacket=newDatagramPacketDatagramPacketpacket=newDatagramPacket(buf,buf.length,address,4445);(buf,buf.length,address,4445);socket.send(packet);socket.send(packet);/getresponse/getresponsepacket=newDatagramPacket(buf,buf.length);packet=newDatagramPacket(buf,buf.length);socket.receive(packet);

43、socket.receive(packet);/displayresponse/displayresponseStringreceived=newString(packet.getData();Stringreceived=newString(packet.getData();System.out.println(System.out.println(“ “QuoteoftheQuoteoftheMoment:Moment:” ”+received);+received);socket.close();socket.close(); 服务器方程序服务器方程序: :QuoteServer.jav

44、aQuoteServer.javapublicclassQuoteServerpublicclassQuoteServerpublicstaticvoidmain(Stringargs)throwspublicstaticvoidmain(Stringargs)throwsjava.io.IOExceptionjava.io.IOExceptionnewQuoteServerThread().start();newQuoteServerThread().start(); 程序程序QuoteServerThread.javaQuoteServerThread.javaimportjava.io.

45、*;importjava.io.*;.*;.*;importjava.util.*;importjava.util.*;publicclassQuoteServerThreadextendsThreadpublicclassQuoteServerThreadextendsThreadprotectedDatagramSocketsocket=null;protectedDatagramSocketsocket=null;protectedBufferedReaderin=null;protectedBufferedReaderin=null;protectedbooleanmoreQuotes

46、=true;protectedbooleanmoreQuotes=true;publicQuoteServerThread()throwsIOExceptionpublicQuoteServerThread()throwsIOExceptionthis(this(“ “QuoteServerThreadQuoteServerThread” ”); ); publicQuoteServerThread(Stringname)throwspublicQuoteServerThread(Stringname)throwsIOExceptionIOExceptionsuper(name);super(

47、name);socket=newDatagramSocket(4445);socket=newDatagramSocket(4445);tryin=newBufferedReader(newFileReader(tryin=newBufferedReader(newFileReader(“ “one-one-liners.txtliners.txt” ”););catch(FileNotFoundExceptione)catch(FileNotFoundExceptione)System.err.println(System.err.println(“ “Couldnotopenquotefi

48、le.ServingtimeCouldnotopenquotefile.Servingtimeinstead.instead.” ”); ); publicvoidrun()publicvoidrun()while(moreQuotes)while(moreQuotes)trytrybytebuf=newbyte256;bytebuf=newbyte256;DatagramPacketpacket=newDatagramPacketpacket=newDatagramPacket(buf,buf.length);DatagramPacket(buf,buf.length);socket.rec

49、eive(packet);socket.receive(packet);StringdString=null;StringdString=null;if(in=null)dString=newDate().toString();if(in=null)dString=newDate().toString();elsedString=getNextQuote();elsedString=getNextQuote();buf=dString.getByte();buf=dString.getByte();/sendtheresponsetotheclientat/sendtheresponsetot

50、heclientat” ”addressaddress” ”andand/“ “portport” ”InetAddressaddress=packet.getAddress();InetAddressaddress=packet.getAddress();intport=packet.getPort();intport=packet.getPort();packet=newDatagramPacket(buf,buf.length,address,port);packet=newDatagramPacket(buf,buf.length,address,port);socket.send(p

51、acket);socket.send(packet);catch(IOExceptione)catch(IOExceptione)e.printStackTrace();e.printStackTrace();moreQuotes=false;moreQuotes=false; socket.close();socket.close(); protectedStringgetNextQuotes()protectedStringgetNextQuotes()StringreturnValue=null;StringreturnValue=null;trytryif(returnValue=in

52、.readLine()=null)if(returnValue=in.readLine()=null)in.close();in.close();moreQuotes=false;moreQuotes=false;returnValue=returnValue=“ “NomoreNomorequotes.Goodbye.quotes.Goodbye.” ”; ; catch(IOEceptione)catch(IOEceptione)returnValue=returnValue=“ “IOExceptionoccurredinIOExceptionoccurredinserverserver

53、” ”; ; returnreturnValue;returnreturnValue; 使用数据报进行广播通信使用数据报进行广播通信n nDatagramSocketDatagramSocket只运行数据报发往一个目的地址只运行数据报发往一个目的地址n nMulticastSocketMulticastSocket将数据报以广播方式发送到该端口将数据报以广播方式发送到该端口的所有客户的所有客户. .n nMulticastSocketMulticastSocket用在客户端用在客户端, ,监听服务器广播来的监听服务器广播来的数据数据客户方程序客户方程序: :MulticastClient.ja

54、vaMulticastClient.javaimportjava.io.*;importjava.io.*;.*;.*;importjava.util.*;importjava.util.*;publicclassMulticastClientpublicclassMulticastClientpublicstaticvoidmain(Stringargs)throwspublicstaticvoidmain(Stringargs)throwsIOExceptionIOExceptionMulticastSocketsocket=newMulticastSocketsocket=newMult

55、icastSocket(4446);MulticastSocket(4446);InetAddressInetAddressaddress=InetAddress.getByName(address=InetAddress.getByName(“ “230.0.0.1230.0.0.1” ”); );socket.joinGroup(address);socket.joinGroup(address);DatagramPacketpacket;DatagramPacketpacket;/getafewquotes/getafewquotesfor(inti=0;i5;i+)for(inti=0

56、;i5;i+)bytebuf=newbyte256;bytebuf=newbyte256;packet=newDatagramPacket(buf,buf.length);packet=newDatagramPacket(buf,buf.length);socket.receive(packet);socket.receive(packet);Stringreceived=newString(packet.getData();Stringreceived=newString(packet.getData();System.out.println(System.out.println(“ “Qu

57、oteofQuoteoftheMoment:theMoment:” ”+received);+received); socket.leaveGroup(address);socket.leaveGroup(address);socket.close();socket.close(); 服务器方程序服务器方程序: :MulticastServer.javaMulticastServer.javapublicclassMulticastServerpublicclassMulticastServerpublicstaticvoidmain(Stringargs)throwspublicstatic

58、voidmain(Stringargs)throwsjava.io.IOExceptionjava.io.IOExceptionnewMulticastServerThread().start();newMulticastServerThread().start(); 程序程序MulticastServerThread.javaMulticastServerThread.javaimportjava.io.*;importjava.io.*;.*;.*;importjava.util.*;importjava.util.*;publicclassMulticastServerThreadext

59、endspublicclassMulticastServerThreadextendsQuoteServerThreadQuoteServerThreadPrivatelongFIVE_SECOND=5000;PrivatelongFIVE_SECOND=5000;publicMulticastServerThread(Stringname)publicMulticastServerThread(Stringname)throwsIOExceptionthrowsIOExceptionsuper(super(“ “MulticastServerThreadMulticastServerThre

60、ad” ”); ); publicvoidrun()publicvoidrun()while(moreQuotes)while(moreQuotes)trytrybytebuf=newbyte256;bytebuf=newbyte256;/constructquote/constructquoteStringdString=null;StringdString=null;if(in=null)dString=newDate().toString();if(in=null)dString=newDate().toString();elsedString=getNextQuote();elsedS

61、tring=getNextQuote();buf=dString.getByte();buf=dString.getByte();/sendit/senditInetAddressgroup=InetAddress.getByName(InetAddressgroup=InetAddress.getByName(“ “230.0.0.1230.0.0.1” ”); );DatagramPacketpacket=newDatagramPacketpacket=newDatagramPacket(buf,buf.length,group,4446);DatagramPacket(buf,buf.l

62、ength,group,4446);socket.send(packet);socket.send(packet);/sleepforawhile/sleepforawhiletrytrysleep(long)(Math.random()*FIVE_SECONDS);sleep(long)(Math.random()*FIVE_SECONDS);catch(InterruptedExceptione)catch(InterruptedExceptione)catch(IOExceptione)catch(IOExceptione)e.printStackTrace();e.printStackTrace();moreQuotes=false;moreQuotes=false; socket.close();socket.close();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号