编写一个带有回调的TCP客户端
时间: 2024-04-29 17:21:52 浏览: 10
这里提供一个Python的示例代码,实现一个带有回调的TCP客户端:
```python
import socket
class TCPClient:
def __init__(self, host, port, callback):
self.host = host
self.port = port
self.callback = callback
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def connect(self):
self.socket.connect((self.host, self.port))
self.socket.setblocking(False)
def send_data(self, data):
self.socket.sendall(data)
def receive_data(self):
try:
data = self.socket.recv(1024)
if data:
self.callback(data)
except:
pass
def close(self):
self.socket.close()
# 示例用法
def callback(data):
print("Received data: {}".format(data))
client = TCPClient("localhost", 8000, callback)
client.connect()
client.send_data(b"Hello, server!")
while True:
client.receive_data()
# 在需要关闭连接时,调用client.close()方法
```
在这个示例中,TCPClient类的构造函数接收三个参数:服务器的主机名、端口号和一个回调函数。回调函数将在接收到数据时被调用,并将接收到的数据作为参数传递给它。connect()方法用于连接到服务器。send_data()方法用于向服务器发送数据。receive_data()方法用于接收从服务器发送回来的数据,并将数据传递给回调函数。close()方法用于关闭连接。最后,一个示例用法是创建一个TCPClient对象,并调用connect()方法连接到服务器。然后,使用send_data()方法向服务器发送数据,并循环调用receive_data()方法以接收从服务器发送回来的数据。在需要关闭连接时,调用close()方法即可。