美文网首页
Android——socket

Android——socket

作者: 四喜汤圆 | 来源:发表于2019-10-08 23:37 被阅读0次

一、作用

二、概念

1.计算机网络5层结构

lrh1993.gitbooks.io

(1)物理层
负责0、1比特流与物理设备电压高低、光的闪灭之间的转换

(2)数据链路层

  • 在节点间传输的是帧
  • 用 MAC 地址来标志节点

(3)网络层
网络层中用 IP 地址来标志节点。

IP 协议

  • 不可靠
    未提供一种数据未到达时的处理机制,这被认为是上层协议 TCP/UDP 应该做的事。

ARP(Address Resolution Protocal) 及 RARP 协议
当主机要发送一个IP包的时候,会首先查一下自己的 ARP高速缓存(就是一个IP-MAC地址对应表缓存)。
如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址。如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。

发送广播的主机就会用新的 ARP 缓存数据准备好数据链路层的数据发送工作。

ICMP 协议
IP 协议是不可靠的,那么保证数据可靠传输的工作就应该由其他模块来完成,ICMP 就是其中一个重要模块。当 IP 数据包传输错误时,ICMP 会将错误信息封包,然后回传回主机,给主机一个处理错误的机会。

(4)传输层

  • DNS(Domain Name System)协议
    是因特网上作为域名和 IP 地址相互映射的分布式数据库。该协议运行在 DNS 协议之上,使用 53 端口。

(5)应用层

2.端口号

端口号的目的是确认对方主机的哪个进程在和自己交互。端口号规定16位,即一个主机有2的16次方65536个端口号。

  • [0,1023]
    分配给系统的端口,我们不可乱用

  • [1024,49151]
    登记端口,必须在 IANA 按规定手续登记后才可使用

  • [49152,65535]
    短暂端口号,给进程暂时使用,一个进程使用完后其他进程可继续使用

在Socket使用时,可以用1024~65535的端口号

3. TCP 协议

4. socket 介绍

5. socket VS Http

Android Socket使用详解

  • http
    请求-响应,主动方是客户端,建立网络连接后,当客户端主动向服务器发送请求后,服务器才能向客户端返回数据。

  • socket
    建立网络连接后,主动方可以是服务端,服务器可主动向客户端发送数据,不需客户端发送请求

6. 长连接 VS 短连接

长连接:客户端和服务器之间始终建立一个通信连接,在连接没有中断前,客户端和服务器之间随时可进行通信。
短连接:通信双方有数据交互时就建立一个连接,数据发送完,就断开此连接。

  • Http 长连接 VS 短连接

  • TCP 长连接 VS 短连接

  • socket 长连接 VS 短连接

三、使用

1.客户端

下文代码摘自Android Socket使用详解

(1)建立连接

// 创建Socket对象 & 指定服务端的IP及端口号 
Socket socket = new Socket("192.168.1.32", 1989); 

(2)客户端接收服务器发送的消息
得到输入流

InputStream in=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(in);
BufferedReader br=new BufferedReader(isr);

(3)客户端向服务器发送消息
得到输出流

OutputStram out=socket.getOutputStream();
out.write("hello"+"\n").getByte("utf-8");

(4)断开和服务器的连接

2.服务器

参考文献

Android Socket使用详解
见证Android消息推送时刻

相关文章

网友评论

      本文标题:Android——socket

      本文链接:https://www.haomeiwen.com/subject/dfavpctx.html