欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Socket用法详解.docx

    • 资源ID:1062353       资源大小:31.80KB        全文页数:21页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Socket用法详解.docx

    在客户/服务器通信模式中,客户端纪要主动创建与服务器连接的SOCket(套接字),服务器端收到了客户端的连接恳求,也会创建与客户连接的Socket.Socket可看诧是通信连接两端的收发器,服务器与客户端都通过Socket来收发数据.这篇文章首先介绍Socket类的各个构造方法,以及成员方法的用法,接着介绍SoCket的一些选项的作用,这些选项可限制客户建立与服务器的连接,以及接收和发送数据的行为.-.构造SocketSocket的构造方法有以N几种垂枝形式:SoCketoSocket(InetAddressaddress,intport)throwsUnknowHostException,IOExceptionSocketfInetAddressaddress,intport,InetAddressIocaIAddr,intIocaIPort)throwsIOExceptionSocket(Stringhost,intport)throwsUnknovzHostException,IOExceptionSoCket(Stringhost,Intport,InetAddressIocaIAddr1intIocaIPort)throwsIOException除了第一个不带参数的构造方法以外,其他构造方法都会试图建立与服务器的连接,假如连接胜利,就返回Socket对象;假如因为某些缘由连接失败,就会抛出IOExcept.on.1.1 运用无参数构造方法,设定等待建立连接的超时时间Socketsocket=newSocket();SocketAddressremoteAddr=newInetSoCketAddreSS("osIhOSt”,8000);socket.connect(remoteAddr,60000);等待建.立连接的超时时间为1分钟以上代码用丁连接到本地机器上的监听8000转口的服务器程序,等待连接的最长时间为1分钟.假如在1分仲内连接胜利则COnneto方法顺当返回;假如在1分钟内出现某种异样,则她出该异样;他如超过1分钟后,即没有连接胜利,也没有出现其他异样,那么会拍出SOCketTimeOUtEXCePtion.S<ket类的ConnecusocketAddressendpointJnttimeout)方法仇说连接服务器,参数endpomt指定蜃务器的地址,参数timeout设定超时数据,以学秒为单位.假如参数timeout谀为0,表示恒久不会超时,默认是不会超时的.1.2 设:定服务器的地址除了第一个不带参数的构造方法,其他沟造方法都须要在参数中设定服务器的地址,包括服务器的IP地址或主机名,以及布口;SocketfInetAddressaddress,intport)第个参数address表示主机的IP地址SoCkeUStringhost,intport)第一个参数host表示主机的名字InetAddress类表示服务器的IP地址,InetAddress类供应系列静态工厂方法,用于构造自身的实例,例如:返回本地主机的IP地址InetAddressaddrl=lnetAddress.get1.ocalHost();返回代表222.3457"的IP地址InetAddressaddr2=lnetAddress.getByName("222.34.5.7");返回域名为"javathinker.org"的IP地址InetAddressaddr3=letAddress.getByName(javathinker.org");1.3 设定客户端的地址在个Socket对象中,即包含远程服务器的IP地址和端口信息,也包含本地客户端的IP地址和雄Il信息.就认状况”客户端的IPifti<11尸客户和阴“!:的上机,客户端的加然网课作系统随机安排.Socket类还有两个构造方法允许显式地设置客户端的IP地址和端口:参数IocaIAddr和IOCalPOrt用来设置客户端的IP地址和端”SOCketUnetAddreSSaddress,intport,InetAddressIocaIAddr,intIocaIPort)throwsIOExceptionSocket(Stringhost,intport,InetAddressIocaIAddr,intIocaIPort)throwsIOException假如一个主机同时属于两个以上的网络,它就可能拥有两个以上的IP地址.例如,一个主机在Internet网络中的IP地址为-222.67.1.34",在一个局域网中的IP地址为-112.543”.假定这个主机上的客户程序希望和向个局域网的个服务器程序(地址为:"11254.45:80(Xr)通信,客户端可依据如卜方式构造Socket对您:InetAddressremoteAddrl=lnctAddress.gctByName("112.5.4.45");InetAddressIocaIAddrl=InetAddreSSEetByNamerll2.5.4.3");SocketSocketl三newSOcket(remoteAddrl,8000,IocaIAddrl,2345);客户端运用缩口23451.4 客户连接服务器时可能抛出的异Fl当Socket的构造方法恳求连接服务器时,可能会抛出下面的异样.UnKnownHostException:假如无法识别主机的名字或IP地址,就会抛出这种异样.ConnectEXCePtion:假如没有服务器进程监听指定的端口,或者服务器进程拒绝连接,就会摘出这种异样.SocketTimeoutException:钱如等待连接卸时,就会抛出这种异样.BindException:假如无法把Socket对收。指定的本地IP地址改制11绑定,就会抛出这种异样.以上4中异样都是IOException的干脆或间接子类.如图2-1所示.IOExceptionUnknownHostException-InterruptediOExcepttonSocketTimeoutExcepttonI-SocketExceptionBindExceptionIConnectException图2-1客户端连接服务器时可能抛出的异样二,获得Socket的信息住一个Socket对象中同时包含了远程服务器的IP地址和端口信息,以及客户本地的IP地址和端口信息.此外,从Socket对象中还可以获得输出流和输入流,分别用丁向服务器发送数据,以及接收从服务器端发来的数据.以下方法用于找得Socket的有关信息.getl11etAddress():获得远程服务器的IP地址.getPort():获得远程服务器的端口.get1.ocalAddress():获得客户本地的IP地址.get1.ocalPort():获得客户本地的箍口.getlnputStream():获得输入流.假如Socket还没仃连接,或者已经关闭,或拧已经通过ShutdownInputO方法关闭输入流,那么此方法会抛出IOExceptIon.getOutputStream():狭得输出流,合如Socket还没有连接,或者己经关闭,或者已经通过ShutdownOutputO方法关闭输出流,那么此方法会抛出IOException.这里有个HTTPCIient类的例子,代码我是写好了,也测试过了,因为篇幅缘由就不贴了.这个HTTPCIient炎用于访问网页javathinker.org/mdex.jsp.该网页位于个主机名(也叫域名)为javathinker.org的远程HTTP服务器上,它Ki听80端口.在HTTPCIient类中,先创建了一个连接到该H11P服务器的Socket对象,然后发送符合HTTP协议的恳来,接芥接收从HTTP服务器上发回的响应结果.,.关闭Socket当客户与限务器的通信结束,应当刚好关闭Socket,以糅放$。Cket占用的包括埔口在内的各种资制Socket的close()方法负送关闭Socket.当一个Socket时象被关闭,就不能再通过它的输入源和输出流进行1/0操作,否则会导致IOException.为了输保关闭Socket的操作总是被执行,剧烈建议把这个操作放在finally代码块中:Socketsocket=null;try(socket=newS<ket(javathinker.org,80);执行接收和发送数据的操作catch(IOExceptione)e.printStackTrace();finally"y(If(SoCketI=null)socket.close();catch(IOExceptione)e.printStackTracc();)SOCket类供应3个状态测试方法.isClosed():假如Socket已经连接到远程主机并Il还没有关闭,则返回true,否则返回false.isConnected():假如SocketW经连接到远程主机,则返回true,否则返回false.isBound(1:假如Socket已经与一个本地绑定,让返回true,否则返回false.假如要推断一个Socket对飘当前是否处于连接状态,可采纳以下方式:booleanisConnected=socket.isConnected()&&!socket.isClosed();四.半关闭Socket进程A与进程B通过Socket通信,找定进程A输出数据,进程B读入数据.进程A如何告知迸程B全陆数据已经输出完毕?下文略五.设巴SoCket的选项SoCket仃以下几个选项.TCP.NODEIAY:表示马上发送数据.So-RESUSEADDR:表示是否允许乘用Socket所绑定的本地地址.SO.TIMEOUT:表示接收数据时的等待超时数据.SojJNGER:表示当执行Socket的CbseO方法时,是否马上关闭底层的Socket.SO_SNFBUF:表示发送数据的缓冲区的大小.SO-RCVBUF:去示接收数据的短冲区的大小.SO.KEEPA1.IVE:表示对于长时间处于空闹状态的Socket,是否要自动把它关闭.OOBIN1.INE:表示是否支持发送一个字H的TCP脍急数据.5.1 TCP_NODE1.AY选项设置该选项:PUbliCvoidsetTcpNoDelay(booleanon)throwsSocketException读取该选项:PUbliCbooleangetTcpNoDeIayf)throwsSocketException我认状况E,发送数据采纳Negale翼法.Negale算法是指发送方发送的数据不会马上发出,而是先放在缓冲区,等缓存区满了再发出.发送完批数据后,会等待接收方对这批数据的回应,然后再发送下一批数据.NegaIe"法适用于发送方纪要发送大批量数据,并且接收方会刚好作出回应的场合,这种算法通过削减传输数据的次数来提高通信效率.假如发送方持续地发送小批量的数据,并且接收方不肯定会马上发送响应数据,那么Negale算法会使发送方运行很慢.对于GUI程序,如网络地戏程序(服务器须要实时踉踪客户端双标的移动),这个问题尤其突出.客户端鼠标位较改动的信息须要实时发送到旅务器上,由于Negale里法采纳缓冲,大大减低了实时响应速度,导致客户程序运行很慢.TCP_NODEIAY的默认位为false,我示采纳Negale算法.假如调用SeRCPNODelaWtrue)方法,就

    注意事项

    本文(Socket用法详解.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开