Не показал желаемого результата - PullRequest
0 голосов
/ 06 мая 2020

Здравствуйте, товарищ программист. Я следовал этому руководству https://www.youtube.com/watch?v=QihjI84Z2tQ Эти сервер и клиент успешно подключились, но когда я пытаюсь собрать, он не показывает желаемый результат на клиентском терминале. Терминал на стороне сервера ни на что не реагирует.

это мой код на стороне сервера:

import socket
import numpy as np
import encodings

HOST = '192.168.0.177'  # Standard loopback interface address (localhost)
PORT = 65432        # Port to listen on (non-privileged ports are > 1023)


def random_data():          # ANY DATA YOU WANT TO SEND WRITE YOUR SENSOR CODE HERE

    x1 = np.random.randint(0, 55, None)         # Dummy temperature
    y1 = np.random.randint(0, 45, None)         # Dummy humidigy
    my_sensor = "{},{}".format(x1,y1)
    return my_sensor                            # return data seperated by comma


def my_server():

    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        print("Server Started waiting for client to connect ")
        s.bind((HOST, PORT))
        s.listen(5)
        conn, addr = s.accept()

        with conn:
            print('Connected by', addr)
            while True:

                data = conn.recv(1024).decode('utf-8')

                if str(data) == "Data":

                    print("Ok Sending data ")

                    my_data = random_data()

                    x_encoded_data = my_data.encode('utf-8')

                    conn.sendall(x_encoded_data)

                elif  str(data) == "Quit":
                    print("shutting down server ")
                    break

                if not data:
                    break
                else:
                    pass


if __name__ == '__main__':
    while 1:
        my_server()

, а это мой клиентский код:

import socket
import threading
import time


HOST = '192.168.0.177'  # The server's hostname or IP address
PORT = 65432        # The port used by the server


def process_data_from_server(x):
    x1, y1 = x.split(",")
    return x1,y1


def my_client():
    threading.Timer(11, my_client).start()

    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.connect((HOST, PORT))

        my = input("Data")

        my_inp = my.encode('utf-8')

        s.sendall(my_inp)

        data = s.recv(1024).decode('utf-8')

        x_temperature,y_humidity = process_data_from_server(data)

        print("Temperature {}".format(x_temperature))
        print("Humidity {}".format(y_humidity))

        s.close()
        time.sleep(5)


if __name__ == "__main__":
    while 1:
        my_client()

I пробовали много решений, печатая "Data" прямо в терминал. кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 07 мая 2020

Хорошо, я нашел проблему. Я использую Sublime Text 3 при запуске скрипта client.py. Когда я публикую в сборке, он ничего не отвечает. Поэтому я меняю свою IDE на PYCharm, и тогда она сработала. Не знаю почему. Я надеюсь, что это поможет другим людям, у которых есть эта проблема. Большое спасибо.

...