Python实现TCP通信流程

步骤概览

下面是实现Python TCP通信的整个流程:

步骤 描述
1 创建一个服务器端的Socket对象
2 绑定服务器的IP地址和端口号
3 监听客户端的连接请求
4 接受客户端的连接请求
5 创建一个客户端的Socket对象
6 向服务器发送连接请求
7 服务器接受客户端的连接请求
8 服务器和客户端开始通信
9 服务器和客户端关闭连接

具体步骤和代码实现

  1. 创建一个服务器端的Socket对象
import socket

# 创建一个TCP/IP的Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  1. 绑定服务器的IP地址和端口号
# 绑定服务器的IP地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
  1. 监听客户端的连接请求
# 监听客户端的连接请求
server_socket.listen(1)
  1. 接受客户端的连接请求
# 接受客户端的连接请求
print('Waiting for a client to connect...')
client_socket, client_address = server_socket.accept()
  1. 创建一个客户端的Socket对象
import socket

# 创建一个TCP/IP的Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  1. 向服务器发送连接请求
# 向服务器发送连接请求
server_address = ('localhost', 8888)
client_socket.connect(server_address)
  1. 服务器接受客户端的连接请求
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()
  1. 服务器和客户端开始通信
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()
  1. 服务器和客户端关闭连接
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: 监听连接