Как создать соединение с vm на Google Cloud
Создал себе vm на Google Cloud и хотел попробовать пообщаться с машиной со своей локальной, но не получается совсем это реализовать.
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("34.66.13.6", 5050))
sock.listen()
conn, addr = sock.accept()
print(conn)
data = conn.recv(1024)
print(data)
При запуске пишет "Can not assign requested address", хотя 34.66.13.6 указан как внешний IP для vm
Если поменять IP на внутренний, то соединения все равно нет. Ну, и код клиента:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("10.128.0.2", 5050)) # -> IP менял в зависимости от IP принимающего сокета
sock.send("World, it's me".encode('utf-8'))
data = sock.recv(1024)
print(data)
С сетями очень плохо, рад буду любой помощи
Ответы (1 шт):
Автор решения: 5c0rp
→ Ссылка
Код сервера который нужно запустить на vm
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('', 5050))
sock.listen(1)
conn, addr = sock.accept()
print('connected:', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.send(data.upper())
conn.close()
Код клиента который вы запускаете локально
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('34.66.13.6', 5050))
sock.send(b'hello, world!')
data = sock.recv(1024)
sock.close()
print(data)
Далее если вы хотите использовать порт 5050 для подключения то нужно выполнить следующие шаги:
- В
Google CloudоткройтеVPC networkи перейдите вFirewall - По аналогии с
default-allow-httpнастройте свое правило только с портом5050 - Перейдите в редактирование своей
vmи в пунктеNetwork tagsдобавьте созданное вами правило с пункта 2 - Перезагрузите на всякий случай
vm(stop/start)