Python实现TCP通信流程
步骤概览
下面是实现Python TCP通信的整个流程:
步骤 | 描述 |
---|---|
1 | 创建一个服务器端的Socket对象 |
2 | 绑定服务器的IP地址和端口号 |
3 | 监听客户端的连接请求 |
4 | 接受客户端的连接请求 |
5 | 创建一个客户端的Socket对象 |
6 | 向服务器发送连接请求 |
7 | 服务器接受客户端的连接请求 |
8 | 服务器和客户端开始通信 |
9 | 服务器和客户端关闭连接 |
具体步骤和代码实现
- 创建一个服务器端的Socket对象
import socket
# 创建一个TCP/IP的Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- 绑定服务器的IP地址和端口号
# 绑定服务器的IP地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
- 监听客户端的连接请求
# 监听客户端的连接请求
server_socket.listen(1)
- 接受客户端的连接请求
# 接受客户端的连接请求
print('Waiting for a client to connect...')
client_socket, client_address = server_socket.accept()
- 创建一个客户端的Socket对象
import socket
# 创建一个TCP/IP的Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- 向服务器发送连接请求
# 向服务器发送连接请求
server_address = ('localhost', 8888)
client_socket.connect(server_address)
- 服务器接受客户端的连接请求
import socket
# 创建一个TCP/IP的Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器的IP地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 监听客户端的连接请求
server_socket.listen(1)
# 接受客户端的连接请求
print('Waiting for a client to connect...')
client_socket, client_address = server_socket.accept()
- 服务器和客户端开始通信
import socket
# 创建一个TCP/IP的Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器的IP地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 监听客户端的连接请求
server_socket.listen(1)
# 接受客户端的连接请求
print('Waiting for a client to connect...')
client_socket, client_address = server_socket.accept()
# 服务器和客户端开始通信
while True:
data = client_socket.recv(1024)
if not data:
break
print('Received:', data.decode())
client_socket.sendall(data)
# 关闭连接
client_socket.close()
server_socket.close()
import socket
# 创建一个TCP/IP的Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 向服务器发送连接请求
server_address = ('localhost', 8888)
client_socket.connect(server_address)
# 客户端和服务器开始通信
while True:
message = input('Enter message: ')
client_socket.sendall(message.encode())
data = client_socket.recv(1024)
print('Received:', data.decode())
if message == 'bye':
break
# 关闭连接
client_socket.close()
- 服务器和客户端关闭连接
import socket
# 创建一个TCP/IP的Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器的IP地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 监听客户端的连接请求
server_socket.listen(1)
# 接受客户端的连接请求
print('Waiting for a client to connect...')
client_socket, client_address = server_socket.accept()
# 服务器和客户端开始通信
while True:
data = client_socket.recv(1024)
if not data:
break
print('Received:', data.decode())
client_socket.sendall(data)
# 关闭连接
client_socket.close()
server_socket.close()
序列图
下面是一个使用mermaid语法表示的序列图,展示了服务器和客户端之间的通信过程:
sequenceDiagram
participant Server
participant Client
Server->>Client: 监听连接