套接字是一种具有之前所说的“通讯端点”概念的计算机网络数据结构
1、套接字有两种,分别是基于文件型的和基于网络型的。
2、套接字地址:主机与端口
3、面向连接与无连接
3.1、面向连接的套接字,即在通讯之前一定要建立一条连接,这种通讯方式也被称为“虚电路”或“流套接字”。面向连接的通讯方式提供了顺序的,可靠的,不会重复的数据传输,而且也不会被加上数据边界。
3.1.1、实现这种连接的主要协议就是传输控制协议(即 TCP)。要创建 TCP 套接字就得在创建的时候,指定套接字类型为 SOCK_STREAM,使用TCP/IP协议。
3.2、无需建立连接就可以进行通讯,实现这种连接的主要协议就是用户数据报协议 (即 UDP)。要创建 UDP 套接字就得在创建的时候,指定套接字类型为 SOCK_DGRAM。SOCK_DGRAM 这个名字,使用UDP/IP协议。
4、python中的网络编程
4.1、socket()模块函数
使用 socket.socket()函数来创建套接字。其语法如下:
socket(socket_family, socket_type, protocol=0)
创建一个 TCP/IP 的套接字:
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
创建一个 UDP/IP 的套接字:
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
4.1.1、套接字对象的常用函数
套接字函数4.2、创建一个TCP服务器
4.2.1、创建通用的TCP服务器的伪代码,如下:
ss = socket() # 创建服务器套接字
ss.bind() # 把地址绑定到套接字上
ss.listen() # 监听连接
inf_loop: # 服务器无限循环
cs = ss.accept() # 接受客户的连接
comm_loop: # 通讯循环
cs.recv()/cs.send() # 对话(接收与发送)
cs.close() # 关闭客户套接字
ss.close() # 关闭服务器套接字(可选)
备注1:一个简单的(单线程的)服务器会调用 accept()函数等待连接的到来。默认情况下,accept()函数是阻塞式的,即程序在连接到来之前会处于挂起状态。
核心提示:创建线程来处理客户的请求
SocketServer 模块是一个基于 socket 模块的高级别的套接字通讯模块,它支持在新的线程或进。
4.2.2、TCP服务程序
TCP服务器程序4.2.3、TCP客户端程序
TCP客户端程序4.3、创建一个UDP服务器
4.3.1、创建一个伪代码:
ss = socket() # 创建一个服务器套接字
ss.bind() # 绑定服务器套接字
inf_loop: # 服务器无限循环
cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
ss.close() # 关闭服务器套接字
4.3.2、创建UDP服务器
UDP服务器4.3.3、创建UDP客户端
cs = socket() # 创建客户套接字
comm_loop: # 通讯循环
cs.sendto()/cs.recvfrom() # 对话(发送/接收)
cs.close() # 关闭客户套接字
UDP客户端
网友评论