LINUX.ORG.RU

Как два байта переслать?

 


0

3

Нужно написать на питоне простые приложения, обменивающиеся данными по сети. С компьютера_1 на компьютер_2 и обратно. Иногда будет работать и через интернет, со всеми роутерами, серыми адресами и прочим. Крайне желательно приложить минимум усилий, чтобы само беспокоилось, не пропало ли «сообщение», само повторно пересылало, если надо, само при приёме нарезало «полученные байты» на отдельные сообщения и тд. Можно через какую-нибудь утилиту.

Ну а главная проблема в том, что я в этом ничего не понимаю.

★★

Ну так пиши. Бери и пиши. Читай, ботай, пиши. Делов-то.

Zhbert ★★★★★
()

[жуткий-оффтопик-похожий-на-флейм]

Как два байта переслать?


Как два пальца об асфальт
[/жуткий-оффтопик-похожий-на-флейм]

PS. Питона не знаю, не подскажу, увы.

bvn13 ★★★★★
()

главная проблема в том, что я в этом ничего не понимаю

ИМХО проще всего делать это по HTTP-протоколу. Веб-сервер на одном конце,

через какую-нибудь утилиту

... утилиту curl или wget на другом конце и все готово, обмениваешься байтами. Глобально, надежно

anonymous
()

проще всего - через http

открываешь сервер, дёргаешь через клиент - просто, с разными наворотами, заворачивается во много что «бай дизайн», и так далее.

odii
()

я сделал прооостенькую систему для чего-то подобного, хотел сделать серию статей в качестве урочника... но ничего ещё не готово, есть только ошмётки от сервера:

http://hg.51t.ru/nms/

odii
()

HTTP? Разве он предотвратит пропажу «запроса»?

Допустим, есть удалённый апач, wget'ом хотим ему что-то передать, но у нас выпал кабель из сетевой карты. Пропадёт информация.

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

ну и нафиг тут рутнои?

Чтобы обрабатывать полученные данные.

Кроме функции «послать» ещё и остальное приложение подразумевается.

man nc

Неплохо.

fffgh ★★
() автор топика

Вам таки надо курить сокеты. По питону не подскажу, к сожалению.

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

у нас выпал кабель из сетевой карты. Пропадёт информация

Ну логично, не?

wget значит нужно запускать в цикле, пока не получим нужный ответ

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

wget значит нужно запускать в цикле, пока не получим нужный ответ

Значит, нужно смотреть, что возвращает wget. И проверять, то ли он вернул, что надо. И на сервере проверять, то ли прислали.

Думаем над тем, как смотреть, как проверять. Добавляем сюда возню с роутерами и прочее.

И получается, что я «изобретаю» протокол и жирную утилиту, работающую с ним. А зачем мне что-то «изобретать», если всё наверняка уже придумано? Надо только взять готовое.

Вот есть, например, торрент (не сильно подходит, но тем не менее). Протокол и работающие с ним приложения. Там можно ресет жать каждые 5 минут, на обоих концах - и всё равно в итоге передаст. И ничего писать не надо, всё давно написано, берёшь и пользуешься.

Уверен, что и эта задача давно решена.

fffgh ★★
() автор топика

Тебе как, чтобы просто код писать или чтобы очень большое количество запросов?

vertexua ★★★★★
()

Открой питоновые доки по Socket Client/Server

fang90 ★★★★★
()

Реально порциями по 2 байта слать собираешься? А ниче, что только HTTP заголовок (40 байт) в нагрузку будет?

assembler_c
()

Либо import socket, либо как выше - ZeroMQ, зависит от того что тебе надо.

ps. знакомый готов продать такую программу уже готовую на Twisted за 5000 руб

ei-grad ★★★★★
()

Ну а главная проблема в том, что я в этом ничего не понимаю.

Ээ, ну тогда в www.linux.org.ru/forum/job

либо учись, сделаешь через N времени

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

Все отлично, либа реализует очередь сообщений, если не получилось — ждёт когда появится коннект. Есть несколько моделей взаимодействия, типа pub/sub, и биндинги к овер 20 языкам. Сама на С. Рекомендую глянуть, если не лень ☺

zarkone ★★
()

Крайне желательно приложить минимум усилий, чтобы само беспокоилось, не пропало ли «сообщение», само повторно пересылало, если надо, само при приёме нарезало «полученные байты» на отдельные сообщения и тд. Можно через какую-нибудь утилиту.

Эта «утилита» называется TCP.

Как два байта переслать?

man Twisted ну или http://lmgtfy.com/?q=python client server example

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

UUCP ещё не предлагали ? :)

Неплохо.

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

Тебе как, чтобы просто код писать или чтобы очень большое количество запросов?

Чтобы просто писать, нагрузка мизерная.

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

Реально порциями по 2 байта слать собираешься?

Немного больше.

А ниче, что только HTTP заголовок (40 байт) в нагрузку будет?

Да хоть мегабайт, лишь бы работало.

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

Эта «утилита» называется TCP.

Ну вот, уже узнал что-то полезное.

Правда, tcp не гарантирует доставку. Всё равно надо сочинять костыль поверх.

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

сырцы делюге почитай

Да зачем мне их читать? Захочу торрент — использую готовый клиент.

fffgh ★★
() автор топика

Советовали twisted, сокеты и ZeroMQ.

Как я понимаю, последнее — наиболее «высокоуровневое» решение. Его использовать будет проще всего. Правильно?

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

может имеет смысл переработать логику? А то как из пушки по воробьям получается. Ну или хоть сырыми сокетами пользуйся...

assembler_c
()
Ответ на: комментарий от bj

Правда, tcp не гарантирует доставку.

Щито?

Как ты себе представляешь протокол, 100% гарантирующий доставку? Чтобы можно было разорвать провод — а данные бы продолжали доставляться. Это вообще не в силах протокола.

Вся надежность TCP заключается в том, что он может уведомить пользователя об успешной или неудачной доставке данных.

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

Как ты себе представляешь протокол, 100% гарантирующий доставку?

Есть только один протокол, гарантирующий доставку - это молитва (tm)

odii
()

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

Советовать HTTP для пересылки двух байтов? Вы серьёзно? Может jquery прикрутить сразу?

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

Чтобы можно было разорвать провод — а данные бы продолжали доставляться

и что? ты редуциуешь сеть к точка-точка не 100% надёжность, но можно сделать настолько близко, насколько позволяют средства

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

не 100% надёжность

Сам предложил — сам опровергнул. Удобно.

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

Ты же прекрасно понимаешь, что попытка реализовать «гарантированную доставку» в твоем понимании изначально обречена на провал.

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

Ты же прекрасно понимаешь, что попытка реализовать «гарантированную доставку» в твоем понимании изначально обречена на провал.

А у тебя какое-то другое, особое понимание «гарантированной доставки»? Если нет, то к чему было это многозначительное «щито»?

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

Это у тебя свое понимание. В случае с сетью все прекрасно понимают что гарантировано доставили или обосрались.

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

Это у тебя свое понимание.

все прекрасно понимают что гарантировано доставили или обосрались.

Понятно все с тобой. Сначала пернул в лужу, а теперь повторяешь высказанные мною ранее тезисы:

Вся надежность TCP заключается в том, что он может уведомить пользователя об успешной или неудачной доставке данных.

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