Могу ли я запускать программы с использованием TCP / IP из IDE и ожидать, что они будут работать? - PullRequest
7 голосов
/ 28 октября 2010

Я только рискнул написать свои первые программы на сокетах в Delphi 2010. Я пытался с Indy, но безуспешно, просто даже написал простой клиент и сервер, который мог бы отправлять пакеты. Затем я использовал TTCPServer и TTCPClient, те же результаты, используя следующие демонстрации «просто, как получается»: -

Демоверсия Emmbercadero TTCPServer

Emmbercadero TTCPClient демо

Я запустил 2 экземпляра IDE для клиентских и серверных приложений. Я был полон решимости избежать позора, когда постил вопрос, связанный с версией «helloworld», основанной на сокетах, и я просто потратил 2 дня, пробуя все.

Ну, я просто решил забить полотенце и попросить вас, ребята, о помощи, прежде чем я сделал это, я просто запустил exesDO вне IDE ... и да, они сработали! Они работали все время, но не изнутри IDE.

Могу ли я успешно запустить эти программы внутри IDE? Спасибо.

Ответы [ 4 ]

4 голосов
/ 28 октября 2010

Не должно быть проблем с запуском внутри IDE.Я делаю это все время.

Убедитесь, что вы не останавливаете какие-либо потоки в отладчике, так как сервер будет работать в потоках.

2 голосов
/ 28 октября 2010

Программы TCP / IP (как клиентских, так и серверных) можно безопасно запускать из Delphi IDE.

Единственная проблема может быть связана с настройками FireWall, но это может быть проблемой, если ваша программа будет иметь доступ к сети.

Во время отладки, если вы выполняете пошаговую процедуру (клавиши F7 / F8), работает только один поток, поэтому любой фоновый поток (например, поток Сервера) не будет работать.

Вы должны запустить Сервер перед запуском Клиента.

Я никогда не использовал классы TTCPClient и TTCPServer, которые, как я обнаружил, содержат ошибки ... попробуйте использовать другой фреймворк, такой как Indy, Synapse или наш SynCrtSock.

Какую версию Delphi IDE вы используете? На какой операционной системе?

1 голос
/ 28 октября 2010

Спасибо за вашу помощь. Я только что нашел решение своей проблемы ...

Некоторое время назад я установил пробную версию программы под названием Diamond Port Explorer, срок действия которой истек. Когда я пытался заставить работать простой Indy TIdTCPServer, я получал ошибку 10146 (или 10106 не могу вспомнить), которую «не удалось инициализировать». Я также обратил внимание на то, что в журнале событий Ide выгрузка модуля произошла в тот момент, когда я пытался установить TIdTCPServer.Active: = true для dcsws2.dll - это DLL из Diamond PortExplorer (который на самом деле не работал).

Итак, я удалил Diamond PortExplorer, и теперь у меня нет проблем!

0 голосов
/ 28 октября 2010

У меня были похожие проблемы при развертывании сервера и клиента datasnap. Проблема, с которой я столкнулся, заключалась в том, что DSServer уже работал, а порт использовался. Поэтому убедитесь, что вы проверили все свои порты и активны ли ваши соединения в IDE, а также в работающих приложениях.

...