Я установил 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.