socket
在学习Django之前先了解一下socket
用socket.socket()创建:
socket.socket(socket_family, socket_type, protocol=0)创建一个socket对象。socket_family是选择地址族(所以都是AF_开头),是不同的域(domain)。域决定者通信的特征,包括地址格式。参数socket_type是确定套接字的类型,进一步确定通信特征。protocol通常是0,表示为给定的域和套接字类型选择默认协议。当对同一域和套接字类型支持多个协议时,可以使用protocol选择一个特定的协议。在AF_INET通信域中,套接字类型SOCK_STREAM的默认协议时传输控制协议 TCP。在AF_INET通信域中,套接字类型SOCK_DGRAM的默认协议是UDP.为什么应该使用 TCP 协议?
- 可靠的:网络传输中丢失的数据包会被检测到并重新发送
- 有序传送:数据按发送者写入的顺序被读取
服务器端socket,bind后就一直处在listen的状态下,
客户端socket,connect后向服务器发出请求,(其中conn是tcp三次握手)
这时,服务器端还在listen,选择accept,
recv和send用于服务器和客户端的数据交换,
客户端收到后,选择close,
服务器收到客户端的close后,也选择close,通信完毕。(那么推测close就应该是四次挥手)
Socket对象方法
-
socket.accept()接受一个连接。这个socket对象必须绑定了一个地址并正在监听着连接。返回的值是(conn, address),conn是一个用来在接连上发送接收数据的新的socket对象,address是绑定在另外一个的socket连接的地址。 -
socket.bind(address)将socket绑定到一个address。这个socket必须是未绑定地址的(address的格式如上文提到的,e.g:IPv4的格式(host, port))。 -
socket.close()关闭这个socket。接下来在这个socket对象的操作都将失败。另外一端将不在接收到数据(当队列中的数据都发送后)。当socket对象被垃圾回收机制回收时,将会自动关闭。 -
socket.connect(address)用address连接到一个远程的socket(address的格式如上文提到的,e.g:IPv4的格式(host, port))

浙公网安备 33010602011771号