欢迎访问宙启技术站
智能推送

Python中使用AF_INET6套接字实现IPv6客户端与服务端之间的通信

发布时间:2023-12-27 03:11:37

在Python中使用AF_INET6套接字实现IPv6客户端与服务端之间的通信,可以使用socket模块来完成。下面是一个使用AF_INET6套接字实现IPv6客户端与服务端之间的通信的例子:

服务端代码:

import socket

# 创建套接字
server_socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)

# 绑定IP地址和端口号
server_address = ('::1', 8800)
server_socket.bind(server_address)

# 监听连接
server_socket.listen(5)
print('服务器开始监听...')

while True:
    # 等待客户端连接
    client_socket, client_address = server_socket.accept()
    print('客户端已连接:', client_address)

    try:
        while True:
            # 接收数据
            data = client_socket.recv(1024)
            if data:
                print('接收到客户端数据:', data.decode())
                # 发送数据
                client_socket.sendall(b'Received')
            else:
                print('客户端断开连接.')
                break
    finally:
        # 关闭客户端连接
        client_socket.close()

客户端代码:

import socket

# 创建套接字
client_socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)

# 连接服务端
server_address = ('::1', 8800)
client_socket.connect(server_address)

# 发送数据
client_socket.sendall(b'Hello server')

# 接收数据
data = client_socket.recv(1024)
print('接收到服务端数据:', data.decode())

# 关闭连接
client_socket.close()

在以上代码中,服务端创建一个IPv6的套接字,并绑定到本地的IP地址和指定端口号。然后通过listen()方法开始监听连接。当有客户端连接时,通过accept()方法接受客户端连接,并通过recv()方法接收客户端发送的数据。同时,通过sendall()方法将数据发送给客户端。如果接收到的数据为空,则说明客户端断开连接,此时退出循环,关闭客户端连接。

客户端创建一个IPv6的套接字,并通过connect()方法连接到服务端的地址和端口号。然后通过sendall()方法向服务端发送数据,通过recv()方法接收服务端返回的数据。

希望以上示例代码能帮助您理解在Python中使用AF_INET6套接字实现IPv6客户端与服务端之间的通信。