网络编程-套接字
网络编程模式——客户机/服务器通信模式。通常一个服务器进程要服务多个客户端进程。
一、socket概述
socket通常也称作套接字,用于描述ip地址和端口。应用程序通常通过套接字向网络发出请求或应答网络请求。
Socket是连接运行在网络上的两个程序间的双向通信的端点。
网络通讯其实指的就是Socket间的通讯
通讯的两端都有Socket,数据在两个Socket之间通过IO来进行传输
二、套接字socket的类型
流式套接字(SOCK_STREAM)——TCP协议,建立在ip协议上,提供可靠的数据传输,无差错无重复发送数据,数据包顺序到达。通过握手建立连接,如果有数据丢失就重新发送。
数据报式套接字(SOCK_DGRAM)——UDP协议,面向无连接的协议,只需知道ip和端口号即可发送,数据不保证到达,顺序混乱。与TCP相比是速度快。
原始套接字(SOCK_RAM)
三、套接字(socket)
Socket是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。说白了Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。