利用python用线程实现基于TCP编程实现双方实时收发数据
时间: 2024-05-01 13:17:17 浏览: 12
以下是一个基于Python线程的TCP编程实现双方实时收发数据的示例代码:
```
import socket
import threading
# 客户端线程
def client_thread(conn):
while True:
data = conn.recv(1024) # 接收数据
if not data:
break
print("收到客户端消息:", data.decode())
reply = input("请输入回复消息:") # 输入回复消息
conn.sendall(reply.encode()) # 发送回复消息
conn.close()
# 服务器线程
def server_thread():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建TCP socket
server_socket.bind(('localhost', 8888)) # 绑定IP和端口
server_socket.listen(5) # 监听连接
print("服务器已启动")
while True:
conn, addr = server_socket.accept() # 等待连接
print("客户端已连接,地址:", addr)
threading.Thread(target=client_thread, args=(conn,)).start() # 开启新线程处理连接
# 开启服务器线程
threading.Thread(target=server_thread).start()
```
在上述代码中,我们创建了两个线程,一个用于处理服务器,另一个用于处理客户端。在客户端线程中,我们使用`conn.recv()`方法接收客户端发送的数据,并使用`input()`方法输入回复消息,再使用`conn.sendall()`方法将回复消息发送给客户端。在服务器线程中,我们使用`socket.socket()`方法创建TCP socket,并使用`socket.bind()`方法绑定IP和端口,然后使用`socket.listen()`方法开始监听连接。当有新连接时,我们使用`socket.accept()`方法等待连接,并开启一个新线程处理该连接。
注意,在实际应用中,我们需要在客户端使用`socket.connect()`方法连接服务器。此外,我们还需要考虑多个客户端同时连接的情况,需要使用多线程或多进程处理并发连接。