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客户端与服务端之间的通信。
