Как инициировать сокет-соединение от сервера к клиенту? - PullRequest
0 голосов
/ 11 февраля 2020

Я установил TCP-сокет между клиентом и сервером, очень просто c. Сторона клиента:

#!/usr/bin/env python3

import socket

# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = "81.88.95.250"                      

port = 25000

# connection to hostname on the port.
s.connect((host, port))                               

# Receive no more than 1024 bytes
msg = s.recv(1024)                                     

s.close()
print (msg.decode('ascii'))

сторона сервера:

#!/usr/bin/env python3
import socket                                         

# create a socket object
serversocket = socket.socket(
                socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = socket.gethostname()                           

port = 25000                                           

# bind to the port
serversocket.bind((host, port))                                  

# queue up to 5 requests
serversocket.listen(5)                                           

while True:
   # establish a connection
   clientsocket,addr = serversocket.accept()      

   print("Got a connection from %s" % str(addr))

   msg = 'Thank you for connecting'+ "\r\n"
   clientsocket.send(msg.encode('ascii'))
   clientsocket.close()

Моя цель - отправить уведомление от клиента к серверу, и это просто. Сложная часть заключается в том, что мне также необходимо в некоторых обстоятельствах запустить соединение с сервера и отправить команду клиенту, и это должно быть выполнено, как только оно получено, поэтому я не могу настроить периодический c «опрос» , Но я очень запутался в этой части, потому что клиент находится за NAT, а не с публичным c IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...