как сделать подключение с разных компов у сокета
не особо шарю и прошу вас помочь как мне сделать подключение у полностью разных компьютеров то есть нет возможности подключения их к одной сети
Ответы (3 шт):
Вопрос довольно размытый и требует уточнения. Если речь идет про обмен данными, проще всего подключить компы к одному wifi. Тогда у машин будет доступ к файлам друг друга. Подробнее здесь: https://wifigid.ru/virtualnaya-wi-fi-set/kak-soedinit-pk-s-pk-po-wi-fi.
При чем так можно даже винду с линуксом подружить.
Более тесное объединение компов, как мне кажется, не целесообразно.
У тебя не понятный вопрос, однако, если тебе надо создать просто сервер и программу для клиентов, то скорее всего я смог тебе помочь. И еще не по делу, но, тебе бы желательно грамматику подучить.
Чтобы подключиться через сокеты между разными "компами" (XD), нужно сделать сервер и клиент. Вот как это можно сделать.
Серверная часть
- Создай файл
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()
Клиентская часть
- Создай файл
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()
Запуск
- Запусти сервер на одном компьютере, который будет делать все по протоколу:
python server.py
- На другом компьютере запусти клиент, указав IP-адрес сервера:
python client.py
Несколько моментов:
IP-адрес: Убедись, что ты берешь правильный IP-адрес сервера. Это может быть локальный (например, 192.168.1.2) или внешний, если сервер доступен в интернете.
Файервол: Если на сервере стоит файрвол, убедись, что порт (12345) открыт для входящих соединений.
Локальная сеть: Если ты тестируешь это в локальной сети, оба компа должны быть подключены к одному роутеру.
server_socket.listen(5)
указывает на то, что сервер может обрабатывать до 5 подключения в очереди. Это означает, что если 5 клиентов уже подключились, новые подключения будут ожидать, пока не освободится одно из мест в очереди. Если нужно, чтоб больше людей подключилось к твоему серверу, то можешь вместо 5, поставить другое количество, которое тебе надо.
Когда все сделаешь, должно все работать. Если что-то не будет получаться — пиши, разберемся!