こんにちは、GCEインスタンスと手元のPC間でUDP通信をする方法に関して質問させてください。こちらのサイトを参考に、いろいろ試しているのですが、うまく通信ができておりません。アドバイスいただきたく、よろしくお願いいたします。

試している内容

  • サーバ:VMインスタンス(OS:Debian GNU/Linux 9 (stretch), f1-micro)

サーバで動かしているコード↓

# -*- coding:utf-8 -*-
import socket
host = "xxx.xxx.xxx.xxx" #外部IP、内部IP両方試しました
port = 8088
serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((host,port))
serversock.listen(10)
print 'Waiting for connections...'
clientsock, client_address = serversock.accept()

while True:
    rcvmsg = clientsock.recv(1024)
    print 'Received -> %s' % (rcvmsg)
    if rcvmsg == '':
      break
    print 'Type message...'
    s_msg = raw_input()
    if s_msg == '':
      break
    print 'Wait...'
    clientsock.sendall(s_msg)
clientsock.close()
  • クライアント:Cloud Shell

クライアントで動かしているコード↓

# -*- coding:utf-8 -*-
import socket
host = "xxx.xxx.xxx.xxx" #外部IP、内部IP両方試しました
port = 8088
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
client.connect((host, port))
client.send("Test Message")
response = client.recv(4096)
print response
  • ファイアウォールルールの設定に以下の2つを追加しました

    • (上り)ターゲットすべてに適用 IP 範囲: 0.0.0.0/0 udp:0-65535
    • (下り)ターゲットすべてに適用 IP 範囲: 0.0.0.0/0 udp:0-65535
  • まずGCE側でサーバ用コードを実行し、「Waiting for connections...」がでてから、Cloud Shellでクライアント用コードを実行しました。

困っているところ

  • サーバ側は「Waiting for connections...」と出たまま動かない("Test Message"が表示されてほしい)
  • クライアント側は、何も出力されない

最終的にやりたい内容

  • まずCloud ShellとGCEインスタンスの間でUDP通信ができるようにしたい
  • Cloud Shellで動かしているpythonコードを、手元のPC上のJupyterNotebookに移して、手元のPCとGCEインスタンスの間でUDP通信ができるようにしたい