Socket:又称套接字,底层要建立连接通道,通过套接字建立连接,向网络发出应答或请求
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,建立socket连接至少需要一对套接字,一个运行于客户端( ClientSocket),另一个运行于服务器端(ServerSocket).
- web应用程序,提供HTTP服务,端口80,HTTP底层就是通过socket建立连接通信管道,实现数据传输,HTTP是一个TCP的传输协议(方式),一个安全可靠的协议
- 数据库应用程序(MySQL是移动服务端的数据库应用程序,端口3306)
网络通信要素:
- ** IP地址:**寻找主机
- 端口号:没有就找不到程序,默认为80,标示进程的逻辑地址(一个应用程序就是一个进程),有效端口(065535,实际不止这些,01024由系统使用保留,开发中建议使用1024以上的端口)
传输协议(用什么方式进行交互):
- TCP:传输控制协议
- 建立连接(即建立的管道),
- 建立之后数据传输大小不收限制
- 通过3次握手完成连接,目的是为数据的安全可靠
- 每次都要进行连接,效率稍低(在通信双方中任何一方主动关闭,连接之前,TCP连接都将被一直保持下去)
- UDP:用户数据报协议
- 不需建立连接(eg:广播),将数据及源和目的封装成数据包
- 不可靠,出现问题,不会有之前的数据
- 数据大小有限制(64kb之内),避免中间出现误差,大量数据丢失
- 速度快
socket通信流程:(需要客户端,服务器端)
服务端将socket,--->bind(端口,来标示当前应用程序),--->监听端口(客户端请求连接[同时连接大量客户端连接,会造成连接阻塞])--->accept(客户端请求[建立连接])--->客户端发请求(write)--->服务器端read--->处理请求后回应数据(write操作)--->客户端read数据--->客户端结束连接---服务器接收断开
实现socket服务端监听
- C语言实现
- CocoeAsyncSocket(第三方框架)