Как создать постоянно работающий клиент сокетов в python

#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. Большое спасибо! На самом деле, я только что попробовал это, и это работает. Раньше не было никакой задержки