LINUX.ORG.RU

Как соедениться двум человекам по IP без сторонних серверов для обмена текстовыми данными на Python?

 ,


0

1

Допустим есть 2 ноды, одна имеет файл, а другая хочет загрузить его. Потом чтобы когда новые ноды начали появляться, загружать можно было не только у одной ноды.Какую библиотеку лучше юзать чтобы им соедениться на python 3? Знаю только socket, но что еще есть? P.s. надо только JSON-ами меняться

★☆

Последнее исправление: Reedych (всего исправлений: 1)

бестолковые надстройки над socket.

t184256 ★★★★★
()

В общем случае никак из-за NAT.

Deleted
()

Обязательно питон?

Ну сокета достаточно, ещё желательно какую-нибудь контрольную сумму, но её можешь и сам написать. Если нужна безопасность, то смотри алгоритм OTR или PGP например, если нет, то достаточно CRC32 какой-нибудь для каждого пакета данных, но тоже не обязательно.

Можешь взять существующие протоколы, например FTP, HTTP, SFTP, SSH ...

Xenius ★★★★★
()
Ответ на: комментарий от Reedych

Ну, я бы порекомендовал начать с Telnet. Не смотря на возраст, концепция жизнеспособна. Более того протокол симметричный (т.е. нет явного сервера и нет явного клиента).

Конечно, сейчас проще написать свой протокол поверх голых сокетов, взяв скажем JSON. Всякие HTTP и то что тебе наговорили (FTP, SSH) тебе не подойдут по причине того, что у них явно закреплено понятие «сервер».

gh0stwizard ★★★★★
()

Можно взять zeromq, дёшево и сердито.

Dendy ★★★★★
()

socket — это не библиотека, это концепция. И ты в любом случае ей будешь пользоваться.

Потом чтобы когда новые ноды начали появляться

Научись, пожалуйста, адекватно писать по-русски (пользоваться временами глаголов, например). Сейчас совершенно нет возможности, да и желания, понять, чего ты хочешь.

intelfx ★★★★★
()

IRC :-)

поднять на одной «ноде» и пользоваться в своё удовольствие. Передача текстовых сообщений - просто запись в канал, для файлов есть DCC

MKuznetsov ★★★★★
()
Ответ на: комментарий от intelfx

socket — это не библиотека, это концепция. И ты в любом случае ей будешь пользоваться.

ну не совсем концпеция... скорее некоторый API для работы с данными.
А концепция, опираясь на которую был разработан данный API более основоположна - «все есть файл».

anonymous
()

загружать можно было не только у одной ноды

Если есть возможность одну ноду использовать в качестве сервера и всем общаться через нее, то я бы взял zeromq с publish-subscribe.

alozovskoy ★★★★★
()
Ответ на: комментарий от anonymous

Ты говоришь конкретно про UNIX-сокеты. Я говорю про сокеты как таковые.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от anonymous

А концепция, опираясь на которую был разработан данный API более основоположна - «все есть файл».

Каким боком сокеты относятся к «всё есть файл»?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Каким боком сокеты относятся к «всё есть файл»?

поток ввода/вывода, почитай про Беркли, который их придумал.

anonymous
()
Ответ на: комментарий от CHIPOK

Вопрос был задан в контексте «какую библиотеку...», а не «как общаться по сети...». И если на то уж пошло, то надо брать socat, а netcat это прошлый век :D

gh0stwizard ★★★★★
()

Я думаю, лучше всего запустить на каждом узле HTTP-сервер и разработать REST-подобный протокол.

Legioner ★★★★★
()

любым подходящим транспортом

anonymous
()
Ответ на: комментарий от kernelpanic

гхм, а не будет ли это мягко говоря overkill? Не, оно то понятно - гланды можно и через жопу удалить. Но нужно ли?

Особенно если ТС уточнил что как минимум одна машина не торчит за NAT

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Это она сейчас не торчит, а потом может и торчать. Да и вообще не ясно, что хочет ТС.

kernelpanic ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.