创建一个python的tcp客户端,客户端包括两个函数,一个是连接函数,一个是发送命令函数,你需要保证客户端在和服务器异常断开之后也能保持程序的不奔溃,同时再下一次调用发送消息的函数前,尝试重新连接
时间: 2024-03-08 20:46:15 浏览: 16
可以使用Python内置的socket模块来创建TCP客户端,代码如下:
```python
import socket
import time
class TcpClient:
def __init__(self, host, port):
self.host = host
self.port = port
self.sock = None
def connect(self):
try:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((self.host, self.port))
print('Connected to server')
except Exception as e:
print(f'Connection failed: {e}')
self.sock = None
def send_command(self, command):
if self.sock is None:
self.connect()
if self.sock is not None:
try:
self.sock.sendall(command.encode())
data = self.sock.recv(1024)
response = data.decode()
print(f'Response received: {response}')
except Exception as e:
print(f'Send command failed: {e}')
self.sock.close()
self.sock = None
host = '127.0.0.1' # 服务器IP地址
port = 8888 # 服务器端口号
client = TcpClient(host, port)
while True:
client.send_command('command')
time.sleep(1) # 每隔1秒发送一次命令
```
在上述代码中,我们定义了一个TcpClient类,其中包括两个函数:连接函数和发送命令函数。连接函数使用socket模块创建TCP客户端,连接到指定的服务器IP地址和端口号;发送命令函数则是向服务器发送命令并接收响应。如果连接失败或发送命令失败,则关闭socket并将其置为None,以便下一次重新连接。在发送命令函数中,我们先判断socket是否为None,如果是,则调用连接函数重新连接;如果不是,则发送命令并接收响应。
最后,在主程序中,我们创建了一个TcpClient对象,并在一个无限循环中调用发送命令函数。这样,即使与服务器异常断开,程序也能保持运行,并在下一次调用发送命令函数前尝试重新连接。