在Python的Socket编程中,客户端和服务器端的角色是不同的。服务器端通常需要监听(listen
)来自客户端的连接请求,而客户端则不需要监听,因为它主动发起连接。
connect()
方法连接到服务器的IP地址和端口。send()
和recv()
方法与服务器进行数据交换。close()
方法关闭连接。bind()
方法将Socket绑定到一个特定的IP地址和端口。listen()
方法开始监听来自客户端的连接请求。accept()
方法接受连接,并返回一个新的Socket对象用于与客户端通信。send()
和recv()
方法与客户端进行数据交换。listen
的原因:connect()
方法连接到服务器。send()
和recv()
方法进行双向通信,而不需要客户端再进行监听。import socket
# 创建Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
server_address = ('127.0.0.1', 12345)
client_socket.connect(server_address)
# 发送数据
client_socket.send(b"Hello, Server!")
# 接收数据
data = client_socket.recv(1024)
print(f"Received from server: {data.decode()}")
# 关闭连接
client_socket.close()
import socket
# 创建Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_address = ('127.0.0.1', 12345)
server_socket.bind(server_address)
# 监听连接
server_socket.listen(5)
print("Server is listening...")
# 接受连接
client_socket, client_address = server_socket.accept()
print(f"Connection from {client_address}")
# 接收数据
data = client_socket.recv(1024)
print(f"Received from client: {data.decode()}")
# 发送数据
client_socket.send(b"Hello, Client!")
# 关闭连接
client_socket.close()
server_socket.close()
客户端不需要调用listen()
方法,因为它不需要监听连接请求。客户端只需要通过connect()
方法连接到服务器,然后就可以直接进行数据的发送和接收。