面试题答案
一键面试- 基本步骤:
- 导入模块:导入
socket
模块,SocketServer
模块在Python 3中已更名为socketserver
,在Python 2中直接使用SocketServer
。 - 创建套接字对象:使用
socket.socket()
创建一个TCP套接字对象,指定协议族为AF_INET
(用于IPv4),套接字类型为SOCK_STREAM
(表示TCP)。 - 连接服务器:使用套接字对象的
connect()
方法连接到服务器,参数为服务器的地址(IP地址和端口号)。 - 发送数据:使用套接字对象的
sendall()
方法发送数据到服务器。 - 接收数据(可选):如果需要从服务器接收响应,可以使用
recv()
方法接收数据。 - 关闭套接字:使用完套接字后,调用
close()
方法关闭它。
- 导入模块:导入
- 关键代码片段(Python 3示例):
import socket
# 创建TCP套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 服务器地址
server_address = ('127.0.0.1', 12345)
# 连接服务器
client_socket.connect(server_address)
# 要发送的消息
message = "Hello, Server!".encode('utf - 8')
# 发送消息
client_socket.sendall(message)
# 接收数据(可选)
data = client_socket.recv(1024)
print('Received:', data.decode('utf - 8'))
# 关闭套接字
client_socket.close()
在Python 2中,代码基本相同,只是导入模块为import SocketServer
(虽然在Python 2中SocketServer
模块内部也是依赖socket
模块),并且字符串编码方面可能略有不同,例如发送消息可能不需要显式调用encode
方法(对于普通字符串类型)。
import socket
# 创建TCP套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 服务器地址
server_address = ('127.0.0.1', 12345)
# 连接服务器
client_socket.connect(server_address)
# 要发送的消息
message = "Hello, Server!"
# 发送消息
client_socket.sendall(message)
# 接收数据(可选)
data = client_socket.recv(1024)
print('Received:', data)
# 关闭套接字
client_socket.close()