как сделать подключение с разных компов у сокета

не особо шарю и прошу вас помочь как мне сделать подключение у полностью разных компьютеров то есть нет возможности подключения их к одной сети


Ответы (3 шт):

Автор решения: Тим Муранов

Вопрос довольно размытый и требует уточнения. Если речь идет про обмен данными, проще всего подключить компы к одному wifi. Тогда у машин будет доступ к файлам друг друга. Подробнее здесь: https://wifigid.ru/virtualnaya-wi-fi-set/kak-soedinit-pk-s-pk-po-wi-fi.

При чем так можно даже винду с линуксом подружить.

Более тесное объединение компов, как мне кажется, не целесообразно.

→ Ссылка
Автор решения: Nymos

У тебя не понятный вопрос, однако, если тебе надо создать просто сервер и программу для клиентов, то скорее всего я смог тебе помочь. И еще не по делу, но, тебе бы желательно грамматику подучить.

Чтобы подключиться через сокеты между разными "компами" (XD), нужно сделать сервер и клиент. Вот как это можно сделать.

Серверная часть

  1. Создай файл server.py и вставь туда вот этот код:

import socket
import select

# Создаем сокет
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Привязываем сокет к адресу и порту
server_address = ('0.0.0.0', 12345)  # Это позволяет принимать подключения с любых IP
server_socket.bind(server_address)

# Начинаем слушать входящие подключения
server_socket.listen(5)
print(f"Сервер запущен на {server_address[0]}:{server_address[1]}")

# Список всех сокетов для мониторинга
sockets_list = [server_socket]
clients = {}

while True:
    read_sockets, _, _ = select.select(sockets_list, [], [])

    for notified_socket in read_sockets:
        if notified_socket == server_socket:
            # Новое подключение
            client_socket, client_address = server_socket.accept()
            sockets_list.append(client_socket)
            clients[client_socket] = client_address
            print(f"Подключение от {client_address}")

        else:
            # Получение данных от клиента
            data = notified_socket.recv(1024)
            if data:
                notified_socket.sendall('Привет от сервера!'.encode('utf-8'))
            else:
                # Закрытие подключения
                print(f"Закрытие подключения от {clients[notified_socket]}")
                sockets_list.remove(notified_socket)
                del clients[notified_socket]
                notified_socket.close()

Клиентская часть

  1. Создай файл client.py и добавь туда следующий код:

import socket

# Создаем сокет
import socket

# Создаем сокет
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Укажи IP-адрес сервера и порт
server_address = ('0.0.0.0', 12345)  # Заменяй <IP-адрес сервера> на реальный IP

# Подключаемся к серверу
client_socket.connect(server_address)

# Отправляем данные серверу
client_socket.sendall('Привет от клиента!'.encode('utf-8'))

# Получаем ответ от сервера
data = client_socket.recv(1024)
print(f"Ответ сервера: {data.decode()}")

# Закрываем соединение
client_socket.close()

Запуск

  1. Запусти сервер на одном компьютере, который будет делать все по протоколу:
   python server.py
  1. На другом компьютере запусти клиент, указав IP-адрес сервера:
   python client.py

Несколько моментов:

  1. IP-адрес: Убедись, что ты берешь правильный IP-адрес сервера. Это может быть локальный (например, 192.168.1.2) или внешний, если сервер доступен в интернете.

  2. Файервол: Если на сервере стоит файрвол, убедись, что порт (12345) открыт для входящих соединений.

  3. Локальная сеть: Если ты тестируешь это в локальной сети, оба компа должны быть подключены к одному роутеру.

  4. server_socket.listen(5) указывает на то, что сервер может обрабатывать до 5 подключения в очереди. Это означает, что если 5 клиентов уже подключились, новые подключения будут ожидать, пока не освободится одно из мест в очереди. Если нужно, чтоб больше людей подключилось к твоему серверу, то можешь вместо 5, поставить другое количество, которое тебе надо.

Когда все сделаешь, должно все работать. Если что-то не будет получаться — пиши, разберемся!

→ Ссылка
Автор решения: eri

Вам нужно купить сервер и запускать серверную часть на сервере.

→ Ссылка