#python #sockets #tcp
#python #сокеты #tcp
Вопрос:
Я уже некоторое время использую TCP-сокет в python, и мой клиент сокетов закрывается после отправки сообщения, но я хочу создать постоянно работающий клиент сокетов, который будет продолжать отправлять сообщения, поскольку у меня уже есть постоянно работающий сервер прослушивателя. Итак, код клиента сокета, над которым мне нравится работать, приведен ниже:
import socket
TCP_IP = "0.0.0.0"
TCP_PORT = 5003
BUFFER_SIZE = 1024
array = [0, 5, 10, 15]
print("Sending sensor value",array)
MESSAGE = bytearray(array) # converting to bytearray for sending via socket
# Sending via socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((TCP_IP,TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
пожалуйста, посоветуйте
Комментарии:
1. Вы пробовали вводить
s.send
иs.recv
в цикл?2.
while some_condition_exists: ...
?3. Вы видели примеры в конце документации по сокету ??
4. Есть довольно много вопросов и ответов на SO, которые ищут ваш вопрос. Кто-нибудь из них отвечает на ваш вопрос? Если да, сообщите нам об этом, и мы пометим ваш как дубликат.
5. @mkrieger1 да, я это сделал. это работает, но через некоторое время мой Linux зависает. Вот почему я искал все возможные способы.
Ответ №1:
Попробуйте это:
import socket
import time
TCP_IP = "0.0.0.0"
TCP_PORT = 5003
BUFFER_SIZE = 1024
array = [0, 5, 10, 15]
MESSAGE = bytearray(array) # converting to bytearray for sending via socket
# Sending via socket
while True:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((TCP_IP,TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
print("Sending sensor value",array)
time.sleep(3)
s.close()
Комментарии:
1. Большое спасибо! На самом деле, я только что попробовал это, и это работает. Раньше не было никакой задержки