【python】网络编程socket TCP UDP

发布于:2024-03-29 ⋅ 阅读:(22) ⋅ 点赞:(0)

网络编程就是实现两台计算机的通信

互联网协议族 即通用标准协议,任何私有网络只要支持这个协议,就可以接入互联网。

socket

socke模块的socket()函数

import socket

sock = socket.socket(Address Family, type)

参数说明:

  1. Address Family:
    指定套接字家族(Address Family),可以是以下之一:
    • socket.AF_INET:IPv4 地址族。
    • socket.AF_INET6:IPv6 地址族。
    • socket.AF_UNIX:UNIX 地址族,用于在同一台机器上的进程间通信。
  2. type:
    指定套接字类型,可以是以下之一:
    • socket.SOCK_STREAM:流式套接字,提供面向连接的、可靠的字节流服务,使用 TCP 协议。
    • socket.SOCK_DGRAM:数据报套接字,提供无连接的数据报服务,使用 UDP 协议。
    • socket.SOCK_RAW:原始套接字,允许您访问底层协议。
  3. proto:
    指定协议编号,通常可以省略。如果 type 参数提供了协议类型,那么这个参数通常设置为 0。

常用方法

  1. bind(address):
    将套接字绑定到指定的地址。address 参数是一个元组,包含主机名和端口号。
  2. listen(backlog):
    开始TCP监听传入的连接请求。backlog 参数指定在拒绝连接之前,可以挂起的最大连接数量。该值至少为1,大部分应用程序为5就可以了。
  3. accept():
    接受传入的连接【阻塞式】,返回一个新的套接字对象和连接的地址。通过这个套接字对象,您可以与客户端进行通信,发送和接收数据。这通常在服务器端使用。
  4. connect(address):
    连接到指定的地址。address 参数是一个元组,包含远程主机的主机名和端口号。连接出错,返回socket.error
  5. send(data):TCP
    发送数据到已连接的套接字。data 参数是要发送的字节串。返回值是发送的字节数量。
  6. sendto(data, address):UDP
    这个方法用于向指定的地址发送数据。data 参数是要发送的字节串,address 参数是一个元组,包含目标主机的地址和端口号。
  7. recv(bufsize):TCP
    接收套接字上的数据。bufsize 参数指定要接收的最大字节数。返回值是字符串形式的数据
  8. recvfrom(bufsize):UDP
    这个方法用于从套接字接收数据,并返回一个包含接收的数据和发送方地址的元组。bufsize 参数指定要接收的最大字节数。返回值是(data,address)
  9. close():
    关闭套接字连接。
  10. sendall(data):
    完整地发送所有数据到已连接的套接字,确保所有数据都被发送。与 send() 方法不同,它会一直发送直到所有数据发送完毕。
  11. recv_into(buffer[, nbytes]):
    将数据读取到一个缓冲区中。buffer 参数是一个可写的字节数组或可写的类似缓冲区的对象。
  12. setsockopt(level, optname, value):
    设置给定套接字选项的值。level 参数指定选项的级别,optname 指定选项的名称,value 指定要设置的值。

TCP data是字节串,不是字符串
需要先将字符串转换为字节串,然后再传递给 send() 方法。可以通过调用字符串对象的 encode() 方法将字符串编码为字节串

socket.send("hi".encode())

接收的字节串转换为字符串打印,decode() 方法将字符串编码为字节串

socket.recv().decode()

TCP

在这里插入图片描述

服务端
客户端
本文含有隐藏内容,请 开通VIP 后查看