Socket 编程是网络编程的基础,它允许程序通过网络与其他程序进行通信。在 Python 中,socket 编程非常简单,因为 Python 提供了内置的 socket
库。
基础概念
- Socket:套接字,是网络通信的基石,它是网络通信中端点之间的抽象表示。
- TCP/IP:传输控制协议/互联网协议,是互联网的基本通信协议。
创建 Socket
要创建一个 Socket,你需要使用 socket
模块:
import socket
# 创建 TCP/IP Socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
这里,AF_INET
表示 IPv4 地址家族,SOCK_STREAM
表示流式 Socket。
连接到服务器
要连接到一个服务器,你需要调用 connect
方法:
server_address = ('localhost', 10000)
sock.connect(server_address)
这里,localhost
是服务器的 IP 地址,10000
是端口号。
发送数据
要发送数据,你可以使用 send
方法:
message = 'Hello, world!'
sock.sendall(message.encode('utf-8'))
这里,我们发送了一个包含 "Hello, world!" 的消息。
接收数据
要接收数据,你可以使用 recv
方法:
data = sock.recv(1024)
print('Received:', data.decode('utf-8'))
这里,我们接收了服务器发送的 1024 字节的数据。
关闭 Socket
最后,不要忘记关闭 Socket:
sock.close()
例子
下面是一个简单的客户端和服务器的例子:
客户端代码:
import socket
server_address = ('localhost', 10000)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(server_address)
message = 'Hello, world!'
sock.sendall(message.encode('utf-8'))
data = sock.recv(1024)
print('Received:', data.decode('utf-8'))
sock.close()
服务器代码:
import socket
server_address = ('localhost', 10000)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(server_address)
sock.listen(1)
while True:
connection, client_address = sock.accept()
try:
print('Connection from', client_address)
data = connection.recv(1024)
print('Received:', data.decode('utf-8'))
connection.sendall(data)
finally:
connection.close()
你可以将客户端代码和服务器的代码分别保存为 client.py
和 server.py
,然后分别运行它们。客户端会连接到服务器,并发送消息 "Hello, world!",服务器会接收这个消息,并回显给客户端。
更多关于 Python Socket 编程的内容,请查看 Python Socket 编程教程。
[