文章目录
- socket
-
- 常用方法
- TCP
-
- 客户端
- 服务器
- UDP
-
- 客户端
- 服务器
网络编程就是实现两台计算机的通信
互联网协议族 即通用标准协议,任何私有网络只要支持这个协议,就可以接入互联网。
socket
socke模块的socket()函数
import socket
sock = socket.socket(Address Family, type)
参数说明:
- Address Family:
指定套接字家族(Address Family),可以是以下之一:- socket.AF_INET:IPv4 地址族。
- socket.AF_INET6:IPv6 地址族。
- socket.AF_UNIX:UNIX 地址族,用于在同一台机器上的进程间通信。
- type:
指定套接字类型,可以是以下之一:- socket.SOCK_STREAM:流式套接字,提供面向连接的、可靠的字节流服务,使用 TCP 协议。
- socket.SOCK_DGRAM:数据报套接字,提供无连接的数据报服务,使用 UDP 协议。
- socket.SOCK_RAW:原始套接字,允许您访问底层协议。
- proto:
指定协议编号,通常可以省略。如果 type 参数提供了协议类型,那么这个参数通常设置为 0。
常用方法
- bind(address):
将套接字绑定到指定的地址。address 参数是一个元组,包含主机名和端口号。 - listen(backlog):
开始TCP监听传入的连接请求。backlog 参数指定在拒绝连接之前,可以挂起的最大连接数量。该值至少为1,大部分应用程序为5就可以了。 - accept():
接受传入的连接【阻塞式】,返回一个新的套接字对象和连接的地址。通过这个套接字对象,您可以与客户端进行通信,发送和接收数据。这通常在服务器端使用。 - connect(address):
连接到指定的地址。address 参数是一个元组,包含远程主机的主机名和端口号。连接出错,返回socket.error - send(data):TCP
发送数据到已连接的套接字。data 参数是要发送的字节串。返回值是发送的字节数量。 - sendto(data, address):UDP
这个方法用于向指定的地址发送数据。data 参数是要发送的字节串,address 参数是一个元组,包含目标主机的地址和端口号。 - recv(bufsize):TCP
接收套接字上的数据。bufsize 参数指定要接收的最大字节数。返回值是字符串形式的数据 - recvfrom(bufsize):UDP
这个方法用于从套接字接收数据,并返回一个包含接收的数据和发送方地址的元组。bufsize 参数指定要接收的最大字节数。返回值是(data,address) - close():
关闭套接字连接。 - sendall(data):
完整地发送所有数据到已连接的套接字,确保所有数据都被发送。与 send() 方法不同,它会一直发送直到所有数据发送完毕。 - recv_into(buffer[, nbytes]):
将数据读取到一个缓冲区中。buffer 参数是一个可写的字节数组或可写的类似缓冲区的对象。 - setsockopt(level, optname, value):
设置给定套接字选项的值。level 参数指定选项的级别,optname 指定选项的名称,value 指定要设置的值。
TCP data是字节串,不是字符串
需要先将字符串转换为字节串,然后再传递给 send() 方法。可以通过调用字符串对象的 encode() 方法将字符串编码为字节串
socket.send("hi".encode())
接收的字节串转换为字符串打印,decode() 方法将字符串编码为字节串
socket.recv().decode()