- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Java Socket的自定义协议,实现Android与服务器的长连接(一)Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口,通常也称作套接字。套接字之间的连接过程可以分为三个步骤:客户端请求,服务端回复收到,客户端收到服务端的回复,即三次握手。连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例完成所需的会话。作者:枚杉来源:segmentfault|2016-12-05 17:08?收藏??分享一、基础知识准备在正式给大家介绍自定义协议之前,我们先对网络传输和协议解析的相关知识点做一个基本的介绍,尽管这些知识点我们在学校里学过,但难免会有所遗忘,这里先做一个简单的介绍,以便对后文的内容理解更加顺畅。1. 网络七层协议OSI的7层从上到下分别是:7 应用层、 6 表示层、 5 会话层、 4 传输层、 3 网络层、 2 数据链路层、 1 物理层;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。应用层常见的协议有:HTTP、FTP、SMTP等;常见的传输层有:TCP、UDP。本文主要是基于TCP自定义协议实现客户端与服务端的长连接。2. SocketSocket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口,通常也称作套接字。套接字之间的连接过程可以分为三个步骤:客户端请求,服务端回复收到,客户端收到服务端的回复,即三次握手。连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。3. 位(bit)、字节(byte)“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1;“字节(Byte)”由8个二进制位构成(即1byte=8bit),它是存储空间的基本计量单位,它能表示到数值范围为0到255(即2的8次方减1);4. 算术移位运算(符号位不变,低位补0)左移运算:12,1的二进制位是1,向左移两位是100,转为十进制数即为4,所以12的运算结果是4;右移运算:72,7的二进制位是111,向右移两位是1,所以72的运算结果是1 。5. Java中各类型占字节数byte??????8位,1个字节?boolean???8位,1个字节?char??????16位,2个字节?short?????16位,2个字节?int???????32位,4个字节?float?????32位,4个字节?double????64位,8个字节?long??????64位,8个字节??6. Java中socket相关函数Socket构造函数Socket(InetAddress address, int port)throws UnknownHostException, IOExceptionSocket(InetAddress address, int port, InetAddress localAddress, int localPort)throws IOExceptionSocket(String host, int port)throws UnknownHostException, IOExceptionSocket(String host, int port, InetAddress localAddress, int localPort)throws IOException还可以通过以下方式生成socket:SocketFactory.getDefault().createSocket(String address, String port) throws ConnectExceptionSocket方法getInetAddress(); // 远程服务端的IP地址getPort(); // 远程服务端的端口getLocalAddress(); // 本地客户端的IP地址getLocalPort(); // 本地客户端的端口getInputStream(); // 获得输入流getOutStream(); // 获得输出流Socket状态isClosed(); // 连接是否已关闭,若关闭,返回true;否则返回falseisConnect(); // 如果曾经连接过,返回true;否则返回falseisBound(); // 如果Socket已经与本地一个端口绑定,返回true;否则返回false判断Socket的状态是否处于连接中?boolean?isConne
您可能关注的文档
最近下载
- 2024年人教版七年级上册数学第1-4章单元检测试卷(4套).pdf
- 七年级上册英语思维导图全部单元仁爱版.docx
- 人教版数学6年级下册全册课件(2024年春季版).pptx
- 加油站改造工程施工方案.pdf
- 历年(2020-2024)全国高考数学真题分类(圆锥曲线)汇编(附答案).pdf
- 海洋要素计算与预报(海浪4).ppt VIP
- 沪教版三年级上册数学递等式计算题训练.docx VIP
- 三年级上册语文课件-名著导读-——格林童话(共19张PPT)部编版.pptx
- 医院感染分级管理与多部门协作制度.docx
- 非煤矿山企业生产安全事故隐患排查治理体系细则(DB37T 3013—2017).pdf VIP
文档评论(0)