Низкоуровневое взаимодействие по сети.

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Ответить
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Низкоуровневое взаимодействие по сети.

Сообщение Дож »

Интересует какая-нибудь библиотека для сетевого взаимодействия с возможностями:
TCP/UDP
NAT или UPnP, ну или вообще возможность создания peer-to-peer соединения
работа под Win32, прочие операционки приветствуются

Можно даже не библиотеку, а просто исходники на паскале, в которых это есть.

Есть такое?
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Indy?
Curl?
ICS?
Synapse?

Sockets, в конце концов...
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Curl вроде только по FTP и HTTP умеет?
ICS и Synapse вроде не умеют по UDP?

Indy посмотрю.

И Sockets заодно. Он точно умеет peer-to-peer'иться?
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Для совсем низко-уровневого - сокеты однозначно. Простенько и со вкусом :-)
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

2 Д,
Что значит "Пер-ту-периться"? Нужно знать адреса узлов. И открыть в файрволах соответствующие порты.

Лучший вариант - Synapse (самый стабильный)
Самый понятный - Indy (много оберточного кода написано, нужно написать код двух процедур)
Самый "управляемый" - Сокеты напрямую
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Угу, именно умение открывать порты в файрволах и нужно :) другое дело, что самому мне пока что этого не получилось сделать.
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

Дож писал(а):Угу, именно умение открывать порты в файрволах и нужно :) другое дело, что самому мне пока что этого не получилось сделать.

Будем надеяться, что и не получится.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Да ладно вам, я не вирусописец, а игродел :) И хочется, чтобы игра работала по сети...
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Тогда используй порт 80 или 443. Они открыты практически всегда.
Используй http-запросы CONNECT для эмуляции постоянного соединения.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Выглядит по-индусски, но я подумаю над этим.
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Хари... Кришна... тебе в помощь :)
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

По ходу я чушь сморозил :) мне нужно открытвать порт не столько в файерволле, сколько в роутере. Это уже звучит не так дико?


Ладно, приведу пример. У меня есть программа, написанная на сокетах, она работает по локалке, но не работает через интернет. Есть мнение, что это из-за роутера - пакеты не доходят до не имеющих собственных глобальных ip адресов компов.

А еще у меня есть uTorrent, который через инет работает. Чем же он круче?
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Много вариантов. Например, тайминги не выставлены достаточные. Либо входящие запросы на внутренние компьютеры сети не транслируются на роутере и т.п.

Попробуй начать с протокола.
Сделай сервер и назначь ему "внешний" Ip (если его дает провайдер). Затем подключись к нему из сети и снаружи. Потом смотри на трансляцию адресов и т.д.
Ответить