Программа для отправки текста между двумя компьютерами в интернете без промежуточного сервера - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужен класс / модуль / библиотека python, который может соединять 2 компьютера (скажем, clientA и clientB) в Интернете и отправлять строковые сообщения между clientA и ClientB. Я не против предоставить IP-адреса / порты или что-то еще в рамках программы clientA и clientB. Передаваемая строка также может быть жестко закодирована в одном из клиентов. ака. Мне не нужен интерфейс в данный момент для ввода строки. Отправленную строку также можно увидеть на терминале. Тем не менее, вот ограничения

  1. Я должен быть в состоянии сделать это через любую обычную сеть, подключенную к Интернету. Например, с компьютера в моем доме, подключенного через Wifi к маршрутизатору, а затем к Интернету. То же самое для клиента на другом конце
  2. Не нужно вносить никаких изменений в сеть, так как я хочу иметь возможность перенести эту программу на моем компьютере в любую сеть
  3. Нет промежуточного компьютера / серверанеобходимо. Для разработки одного и того же clientA и clientB следует просто подключиться к Интернету, и любое сообщение не следует отправлять на промежуточный сервер.

Я знаю, что одноранговые сети, такие как торренты и т. Д., Делают это сфайлы. но не смогли выяснить, каким образом компьютер в подсети, такой как 192.168.xx, может быть однозначно идентифицирован в Интернете.

Грубый шаблон может выглядеть так:

class Client:
    def __init__(self):
        self.ipaddress="xxxx"
        self.port="yyyy"
        self.otherConfig1="aaaa"
        self.otherConfig2="bbbb"

    def messageReceived(message:str):
        print(f"The message is {message}")


    def messageSend(message:str):
        #hardcoded identifier/ipaddress etc of other client
        #code to send the message to that identifier

    def main():
        #infinite loop
        #send a string message every 10 seconds(for testing)
        # keep checking if as message is received

     if __name__== "__main__" :
          main()
...