Socket详解:https://realpython.com/python-sockets/
要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,
从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的
socket
socket:套接字,是进程间通信的一种方式,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
其主要特点有:可以实现不同主机间(网络)的进程通信,几乎所有的网络进程通信都是用socket来实现通信的
创建socket的基本流程
一、 使用socket实现不同主机进程的通信的流程
1创建socket对象
2. 使用socket对象发送与接收数据
3. 关闭socket
二、 socket.socket 创建一个 socket,该函数带有两个参数:
Address Family:地址族,可以选择 AF_INET(用于 Internet 进程间通 信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
Type:套接字类型,可以是 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)或者 SOCK_STREAM(流式套接字,主要用于 TCP 协议)
使用socket实现网络通信流程
def main(): # 1. 创建socket对象 sc = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2. 使用socket对象发送与接收数据 # sc.sendto() # 发送数据 # sc.recvfrom() # 接收数据 # 3.关闭socket print("-----socket run-------") sc.close() if __name__ == "__": main()