Android的Sokcet编程

本文介绍了Android的Socket编程,包括Socket的定义、与HTTP链接的区别、通讯过程,以及Java实现Socket通讯的方法。此外,还对比了WebSocket与Socket的不同,强调WebSocket为实现Web实时通信的需求而设计。
摘要由CSDN通过智能技术生成

Android的Socket编程

序言

最近这两天面试因为之前项目的聊天是基于socket写的,所以面试的时候经常会被问到相关的问题,今天整理一下相关的知识。

Socket简介(什么是Socket)

定义:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket

本地的进程间通信的方式有好多种,但网络中进程之间是如何通信的呢,首先要解决如何标示一个进程,在本地有进程的pid来标示一个进程,在网络上,通过tcp/ip协议族可以解决这个问题。

  1. 网络层的ip地址可以标示网络中的主机
  2. 传输层的协议+端口 可以唯一标示主机中的应用程序(进程)

这样 利用 ip+协议+端口就可以标示网络中的进程了。

socket链接和http链接的区别

估计有人还分不清socket和http的区别 ,正好有这机会普及一下:

Http协议:简单对象访问协议,对应于应用层,http是基于tcp链接的

tcp协议:对应传输层

ip协议:对应网络层

TCP/IP对传输层协议,主要解决数据如何在网络中传输,而Http是应用层协议,主要解决如何包装数据详见:《TCP/IP详解 卷一》

Sokcet是对tcp/ip协议的封装,Sokcet本身并不是协议,而是一个调用接口(api),通过Socket才能使用TCP/IP协议

http链接:短连接,即客户端向服务器发送一次请求,响应之后就会断掉;

sokcet链接 :长连接,理论上建立之后不会主动断掉,实际情况受环境因素影响 比如:服务器宕机,网络故障,长时间没有数据,防火墙等。

总的来说 Socket本身并不是协议,而是一个调用接口(API) ,Socket跟TCP/IP协议没有必然的联系 ,Socket编程接口在设计的时候,就希望也能适应其他的网络协议,从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等

有张图可以表示的比较明确

Socket的位置

Socket的通讯过程

Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client 端都可以通过Send,Write等方法与对方通信。

对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值