1. <pre id="seaah"><ruby id="seaah"></ruby></pre>
    2. <acronym id="seaah"><label id="seaah"><menu id="seaah"></menu></label></acronym>
      <acronym id="seaah"></acronym>

          下载

          1下载券

          加入VIP
          • 专属下载券
          • 上传内容扩展
          • 资料优先审核
          • 免费资料无限下载

          上传资料

          关闭

          关闭

          关闭

          封号提示

          内容

          首页 SocketProgramming

          SocketProgramming.doc

          SocketProgramming

          叼着一支烟喝茶
          2019-05-04 0人阅读 举报 0 0 0 暂无简介

          简介:本文档为《SocketProgrammingdoc》,可适用于考试题库领域

          Javasocket开发实例入门socket用中文意思就是我们常说的”套接字“,我们用它来解决基于TCPIP协议的网络通信。Java有一套功能强大而又易于使用的网络开发API,这个API是一系列的接口和类,在javanet和javaxnet包中可以找到它们。套接字一般分为两种:流套接字(StreamSocket)和数据报套接字(DatagramSockets)。关于套接字的编程可以写成一本书,本文不想在这里做深入探究(其实是本人功力还不够,嘿嘿),这次主要是了解一下流套接字的基本开发。一、几个重要的API:、InetAddress类描述:该类在套接字编程中份演着目的地角色,通常作为参数传递给流套接字类和数据报套接字的构造方法或其它方法。构造方法:该类只有一个默认的不带参的构造方法。不能直接用new创建一个InetAddress对象。象这样做InetAddressia=newInetAddress()就是错误的。但是我们可以通过它的个静态工厂方法获得一个InetAddress对象或对象数组。重要方法:staticInetAddressgetAllByName(Stringhost)通过传递参数host(主机名),返回一个InetAddress对象数组的引用。如果指定的主机没有IP地址存在,则方法抛出一个UnknownHostException异常对象。staticInetAddressgetByAddress(byteaddr)通过传递一个用字节数组表示的二进制IP地址参数(字节对应Ipv,字节对应Ipv),返回一个InetAddress对象的引用。如果返回对象的数组既不是字节也不是字节,则方法抛出一个UnknownHostException异常对象。staticInetAddressgetByAddress(Stringhost,byteaddr)创建一个基于给定主机名和给定字节数组组成的IP地址的InetAddress对象。如果返回对象中的数组既不是字节也不是字节,则方法抛出一个UnknownHostException异常对象。staticInetAddressgetByName(Stringhost)返回一个与给定主机名的InetAddress对象。如果指定的主机没有IP对应,则方法抛出一个UnknownHostException异常对象。staticInetAddressgetLocalHost()返回一个包含本地主机的IP地址的InetAddress对象。上面讲到的方法均提到返回一个或多个InetAddress对象的引用,实际上每一个方法都要返回一个或多个InetAddressInetAddress对象的引用。一旦获得了InetAddress对象,你就可以使用其他非静态方法得到你想要的东东了。、Socket类描述:Socket是建立网络连接时使用的。在连接成功时,服务端和客户端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。构造方法:该类有多个构造方法,常用的有两个:Socket(InetAddressaddr,intport)和Socket(Stringhost,intport)两个构造方法都创建了一个基于指定接服务器主机名或InetAddress和服务器端口号的流套接字。对于第一个InetAddress子类对象通过addr参数获得服务器主机的IP地址,对于第二个函数host参数包被分配到InetAddress对象中,如果没有IP地址与host参数相一致,那么将抛出UnknownHostException异常对象。如果创建连接成功,java网络API将在客户端的流套接字中捆绑客户程序的IP地址和任意一个端口号,否则两个函数都会抛出一个IOException对象。重要方法:InputStreamgetInputStream()获得网络连接输入,同时返回一个IutputStream对象实例。OutputStreamgetOutputStream()获得网络连接输出,连接的另一端将得到输入,同时返回一个OutputStream对象实例。必须捕获两个方法可能产生的IOException。怎么操作这些流对象就看你要作什么了!:)、ServerSocket类描述:该类用于服务器端。构造方法:该类有四个构造方法,常用的有:ServerSocket(intport)通过指定监听端口号来创建ServerSocket对象,如果在这时出现错误将抛出IOException异常对象,否则将创建ServerSocket对象并开始准备接收连接请求。接下来无限循环调用accept()方法。重要方法:Socketaccept()调用开始后accept()方法将导致调用线程阻塞直到连接建立。在建立连接后accept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址和端口号。、注意事项:在服务端和客户端均未发送数据时,不要在同时在两端的while()循环里读取InputStream。否则将造成阻塞。如果用字符流处理数据,请在数据末尾加上“rn”,并记得flush()一下。二、实例、服务端SimpleServerSocket:例子采用字节流来操作,注释部分是采用字符流来操作。packagecomcyberobjectsocketimportjavaioBufferedInputStreamimportjavaioBufferedOutputStreamimportjavaioBufferedReaderimportjavaioIOExceptionimportjavaioInputStreamReaderimportjavaioPrintWriterimportjavanetServerSocketimportjavanetSocketpublicclassSimpleServerSocket{privateServerSocketserver=privateintport=publicSimpleServerSocket()throwsIOException{intcounter=try{thisserver=newServerSocket(thisport)}catch(Exceptionex){Systemerrprintln("Can'tlisteningonport:"thisport)exprintStackTrace(Systemerr)Systemexit()}Systemoutprintln("Startlisteningonport:"thisport)while(true){newServerThread(serveraccept(),counter)start()counter}}publicstaticvoidmain(Stringargs)throwsException{SimpleServerSocketsserver=newSimpleServerSocket()}}classServerThreadextendsThread{privateSocketclientprivateintcounterpublicServerThread(Socketclient,intcounter){Systemoutprintln("infoCreateconnectionwith"clientgetInetAddress()getHostAddress()toString()"successful")thisclient=clientthiscounter=counter}publicvoidrun(){try{BufferedInputStreambis=newBufferedInputStream(clientgetInputStream())BufferedOutputStreambos=newBufferedOutputStream(clientgetOutputStream())BufferedReaderin=newBufferedReader(newInputStreamReader(clientgetInputStream()))PrintWriterout=newPrintWriter(clientgetOutputStream(),true)boswrite(("Hi!EnterQUITtoexitrn")getBytes())bosflush()booleandone=falsebytebytes=newbyteclientgetReceiveBufferSize()while(!done){intcontentLength=bisread(bytes)if(contentLength==){Systemoutprintln("contentLength="contentLength)done=true}else{Stringrecieve=newString(bytes,,contentLength)if(recievetrim()equalsIgnoreCase("quit")){done=true}else{Systemoutprintln("info"recieve)boswrite(("Echoserver("counter"):"recieve"rn")getBytes())bosflush()}}}Stringrecievewhile((recieve=inreadLine())!=){if(recievetrim()equalsIgnoreCase("quit")){break}else{Systemoutprintln("info"recieve)outprintln("Echoserver("counter"):"recieve)}}}catch(Exceptione){eprintStackTrace()}finally{try{if(client!=){clientclose()Systemoutprintln("infoDisconnectsuccessful")}}catch(IOExceptione){eprintStackTrace()}}}}、客户端SimpleSocket:packagecomcyberobjectsocketimportjavaio*importjavanet*publicclassSimpleSocket{privateSocketclientprivateStringhost=""privateintport=publicSimpleSocket(){try{thisclient=newSocket(InetAddressgetByName(thishost),thisport)Systemoutprintln("infoConnectto"thishost"successful")BufferedReaderin=newBufferedReader(newInputStreamReader(clientgetInputStream()))PrintWriterout=newPrintWriter(clientgetOutputStream(),true)BufferedReadersystemIn=newBufferedReader(newInputStreamReader(Systemin))BufferedInputStreambis=newBufferedInputStream(clientgetInputStream())BufferedOutputStreambos=newBufferedOutputStream(clientgetOutputStream())Systemoutprintln("infoStart")booleandone=falsewhile(!done){Stringrecieve=inreadLine()if(recieve==)done=trueelse{Systemoutprintln(recieve)outprintln(systemInreadLine())}}bytebytes=newbyteclientgetReceiveBufferSize()intlen=while(!done){len=bisread(bytes)if(len==)done=trueelse{Stringrecieve=newString(bytes,,len)Systemoutprintln(recieve)boswrite(systemInreadLine()getBytes())bosflush()}}Systemoutprintln("infoStop")}catch(Exceptionex){exprintStackTrace(Systemerr)}finally{try{if(client!=){clientclose()}}catch(IOExceptione){eprintStackTrace()}}}publicstaticvoidmain(Stringargs){SimpleSocketssocket=newSimpleSocket()}}

          用户评价(0)

          关闭

          新课改视野下建构高中语文教学实验成果报告(32KB)

          抱歉,积分不足下载失败,请稍后再试!

          提示

          试读已结束,如需要继续阅读或者下载,敬请购买!

          评分:

          /16

          VIP

          意见
          反馈

          免费
          邮箱

          平特一肖加减公式-平特一肖精准资料-平特一肖开特肖算中吗