| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Соединение по интернету между сервером и клиентом |
| Автор: yogin 8.7.2008, 12:18 | ||||||
| Всех категорически приветствую. Сразу скажу что по своему вопросу целую неделю рою инет, книги и мнения знакомых. НИЧЕГО! Первоочередная цель вот о чём: Необходимо создать соединение ПО ИНТЕРНЕТУ по средствам компонентов idTCP(Server/Client) с банальной возможностью передачи хотя бы строк! есть следующие наработки - небольшое изменение того что есть в DRKB: СЕРВЕР
КЛИЕНТ
Это такой убогий пример кстати, в некоторых местах у кода отсутствуют места с var и началом процедуры вообщем, так же ненаписано, что нужно создать такой тип и запись, пришлось самому догадываться:
Потом так и остались неизвестными строки которые я прокомментил БОЛЬШИМИ БУКВАМИ вообщем кое как добился чтобы этот пример работал, но он работает только В СЕТИ! и теперь вопрос на миллион долларов - что нужно доделать чтобы это всё чудо, которое мне нравится(из-за потоков и передачи переменной-записи через буфер) РАБОТАЛО ПО ИНТЕРНЕТУ! именно: какой айпи куда вписывать(серверу/клиенту)? есть мнение что нужно клиенту прописывать внешний айпи сервера, но когда я так делаю со своим примером, то клиент висне, как буд-то пакет не доходит до сервера. В курсе о жизни пакета - его первый байт, может его где-то в параметрах компонентов прописать, чтобы он был не 1, как требуется для локалки, а больше... Особенности подключения: Хочу для начала протестировать это всё с сервером на моём компе, у меня АДСЛ, внешний айпи могу узнать легко и сказать тому у кого будет клиент - моему знакомому, он введёт куда надо и законнектится ко мне. Вообщем так я и тестил все эти неудачные попытки((. А потом уже перемещу серв на статичный айпи(сразу немогу потому что нужны деньги) и всё такое, вообщем мне нужно сначало всё протестить. Очень нужна помощь в этом вопросе, я уже незнаю что делать! у меня из-за этого ступора вся работа встала! После того как разъяснится мой случай, то настаиваю о добавлении получившегося живого примера в DRKB. |
| Автор: yogin 8.7.2008, 18:30 |
| Проблема соединения решина. Поясню причину для тех кто задался таким же вопросом: Дело в том, что, при тестировании соединения, для сервера я ошибочно использовал свой компьютер, у которого внешний IP является динамическим. При запросе с клиента пакет получает провайдер и далее уничтожает его, т.к. не знает что с ним делать, потому что внешний IP не ассоциирован с моим компьютером. Следовательно мой комп не мог выступать в роли сервера. Запустили сервер на компьютере с непосредственным внешним IP, у клиента параметру Host нужно присвоить IP сервера ну и одинаковые порты конечно и вуаля! всё контачит. Остаётся открытым вопрос о неизвестных переменных в приведённом мной примере из DRKB ??? |
| Автор: SneG0K 9.7.2008, 06:21 |
Порт назначить можно только серверу. Клиенту от этого не холодно не жарко должно быть. Посмотри например как работает браузер. Он всегда коннектится к 80 порту (или почти всегда), но с абсолютно разных портов. |
| Автор: yogin 10.7.2008, 00:15 | ||
хм, не обращал внимания, но тогда зачем у клиентских компонентов есть параметр Port, если он не обязателен? |
| Автор: Virtuals 10.7.2008, 06:26 | ||
yogin,
немного теории:... в обще случае полный! адресат при применении протокоа TCP-IP выглядит так: MAC (физический адрес сетевого адаптера) - IP (адрес по протоколу IP) - PORT (адрес по протоколу TCP) отсюда: серверу обязательно указывать порт на котором слушать (ну иначе как операционка поймет кому пришел пакет) клиенту указывается порт на который соединится (такой-же как у сервера), и порт "обратного адреса" хотя можете и назначить его сами. (лиж бы данный порт был свободен в данный момент времени на клиентской машине) |
| Автор: yogin 12.7.2008, 21:18 |
| Я рассмотрел разные случаю прописывания порта у клиента и пришёл к выводу, что не указывать порт - это не рациональное решение задачи. Думайте сами почему, это пойдёт некоторым на пользу. |