MST

星途 面试题库

面试题:网络编程之Socket编程中IPv6支持基础

在Socket编程中,如何实现对IPv6地址的绑定与监听?请简要描述主要步骤,并给出Python语言的示例代码片段。
42.8万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

主要步骤

  1. 创建套接字:使用 socket.socket 创建一个基于IPv6的套接字对象,指定 socket.AF_INET6 地址族和 socket.SOCK_STREAM(TCP)或 socket.SOCK_DGRAM(UDP)类型。
  2. 设置套接字选项:可根据需求设置一些套接字选项,如 SO_REUSEADDR 允许重用本地地址。
  3. 绑定地址:使用 bind 方法将套接字绑定到指定的IPv6地址和端口。
  4. 监听连接(仅适用于TCP):如果是TCP套接字,调用 listen 方法开始监听传入的连接。

Python示例代码(TCP)

import socket

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

# 设置套接字选项,允许重用地址
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# 绑定到指定的IPv6地址和端口
server_address = ('::1', 8888, 0, 0)  # '::1' 是IPv6环回地址,8888为端口号
server_socket.bind(server_address)

# 开始监听
server_socket.listen(5)  # 最大连接数为5

print('Server is listening on IPv6 address...')

while True:
    client_socket, client_address = server_socket.accept()
    print(f'Connected by {client_address}')
    client_socket.close()

Python示例代码(UDP)

import socket

# 创建IPv6 UDP套接字
server_socket = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)

# 设置套接字选项,允许重用地址
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# 绑定到指定的IPv6地址和端口
server_address = ('::1', 8888, 0, 0)  # '::1' 是IPv6环回地址,8888为端口号
server_socket.bind(server_address)

print('Server is listening on IPv6 address for UDP...')

while True:
    data, client_address = server_socket.recvfrom(1024)
    print(f'Received from {client_address}: {data.decode()}')