python socket编程
Python 中的 socket 编程是通过 socket
模块来实现的,它提供了标准的 BSD 套接字接口。使用 socket,你可以实现网络通信,创建客户端和服务器应用程序。这里,我将介绍如何在 Python 中使用 socket 创建一个简单的服务器和客户端。
Socket 服务器端
服务器端代码主要任务是监听一个端口,接受客户端的连接请求,并根据请求做出响应。下面是一个简单的服务器端实现:
import socket
def server_program():
# 获取本地主机名
host = socket.gethostname()
port = 5000 # 端口号
server_socket = socket.socket() # 创建 socket 对象
server_socket.bind((host, port)) # 绑定端口
server_socket.listen(2) # 监听,最多可以连接两个客户端
print("Waiting for a connection...")
while True:
# 建立客户端连接
conn, address = server_socket.accept() # 接受新连接
print("Connection from: " + str(address))
while True:
data = conn.recv(1024).decode() # 接收数据,每次接收1024字节
if not data:
# 如果没有数据,跳出循环
break
print("From connected user: " + data)
data = input(' -> ')
conn.send(data.encode()) # 发送数据给客户端
conn.close() # 关闭连接
if __name__ == '__main__':
server_program()
Socket 客户端
客户端代码主要任务是连接服务器,发送请求,并接收服务器的响应。下面是一个简单的客户端实现:
import socket
def client_program():
host = socket.gethostname() # 服务器的主机名
port = 5000 # 服务器的端口号
client_socket = socket.socket() # 创建 socket 对象
client_socket.connect((host, port)) # 连接到服务器
message = input(" -> ") # 初始消息
while message.lower().strip() != 'bye':
client_socket.send(message.encode()) # 发送消息
data = client_socket.recv(1024).decode() # 接收响应
print('Received from server: ' + data) # 显示响应
message = input(" -> ") # 再次输入消息
client_socket.close() # 关闭连接
if __name__ == '__main__':
client_program()
关键点
-
创建 Socket:
- 使用
socket.socket()
创建一个新的 socket 对象。
- 使用
-
服务器绑定和监听:
- 服务器使用
bind()
方法绑定到一个特定的地址和端口上。 - 使用
listen()
方法开始监听传入的连接请求。
- 服务器使用
-
接受连接:
- 使用
accept()
方法接受客户端的连接请求。
- 使用
-
发送和接收数据:
- 使用
send()
和recv()
方法在客户端和服务器之间发送和接收数据。
- 使用
-
关闭 Socket:
- 使用
close()
方法关闭 socket。
- 使用
这是 Python 中使用 socket 进行网络编程的基本介绍。你可以根据需要扩展这些基本示例,添加错误处理、多线程或多进程功能来处理多个客户端连接等。