Простая задача по использованию TCP/IP
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Задача такова.
Требуется написать программу, которая будет соединяться с произвольным сервером по указанному номеру порта, передавать на сервер произвольную строку, ждать отклик сервера и выводить его на экран локальной машины.
Просто я никогда в Дельфи с сетью не работал, даже не представляю себе, как это выглядит.
Требуется написать программу, которая будет соединяться с произвольным сервером по указанному номеру порта, передавать на сервер произвольную строку, ждать отклик сервера и выводить его на экран локальной машины.
Просто я никогда в Дельфи с сетью не работал, даже не представляю себе, как это выглядит.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 50
- Зарегистрирован: 09 мар 2005, 13:57
- Контактная информация:
Как ты хочешь осуществить это? Тебе нужно будет как минимум на сервер к которому будешь цепляться бросить и запустить одну из твоих прог которая будет обрабатывать эти запросы от другой машины
Ну, я так думаю, это будет выглядеть так: мой комп устанавливает с произвольным сервером (да все равно каким, хоть с соседним компом из локальной сети, и совсем не обязательно, чтобы на нем был Апач или что-то вроде) TCP/IP соединение и посылает туда что-то типа "dkjasdhhdjkshf" на указанный мной порт. Сервер, наверное, ответит что-то типа "Access denied" или "Bad command or filename", ну не знаю я, что нормальные серверы на такую белиберду отвечают. Вот этот Access denied мне и надо вывести, например, в Edit. Только как это все программно реализовать?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 50
- Зарегистрирован: 09 мар 2005, 13:57
- Контактная информация:
В таком случае тебе нужно будет использовать api функции или даже ассемблерные вставки на обработку сетевых пакетов. Тут я уже ничем помочь не могу, я только с компонентами балдею
Я попробовал поюзать IDTCPClient. Написал так:
На строке Connect прога выдает мне ошибку: "Socket error 10061: Connection refused". С чем это может быть связано?
Код: Выделить всё
IDTCPClient1.host:=Edit1.Text;//В нем сейчас 127.0.0.1
IDTCPClient1.BoundIP:=Edit1.Text;
IDTCPClient1.Port:=strtoint(edit5.Text);//В нем 80
IDTCPClient1.Connect;
showmessage('Connected!');
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
А на сервере какой код?
просто у тебя на локальной тачке не запущен сервер WEB 
Если нет желания запускать оный, попробуй порт 135, он почти у всех соединения принимает.
А так - той код очень даже и рабочий.

Если нет желания запускать оный, попробуй порт 135, он почти у всех соединения принимает.
А так - той код очень даже и рабочий.
С уважением, Lost Angel...
2 LAngel: спасибо, 135 порт действительно принимает, сообщение "Connected!" выдает. Дальше я попробовал написать так:
На строке Edit2.Text:=IDTCPClient1.ReadString(100); прога уходит в глухую несознанку. Ни на что не реагирует, кроме Ctrl-Alt-Del. Может, это как-то с фаерволлом связано? Или просто мой комп обучен не отвечать на всякие левые запросы по 135 порту?
Код: Выделить всё
IDTCPClient1.Write(Edit6.Text);
application.ProcessMessages;
Edit2.Text:=IDTCPClient1.ReadString(100);
application.ProcessMessages;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Он просто перешел в режим чтения данных. Пока не прочитает те 100 символов не отдаст управление.
Можно проверять сколько байт пришло для чтения, или организовать чтение отдельным потоком.
Можно проверять сколько байт пришло для чтения, или организовать чтение отдельным потоком.
С уважением, Lost Angel...
Если интересно - маленький примерчик по использованию idClient:
http://netroad.ru/~vadim1313/idcl.rar
http://netroad.ru/~vadim1313/idcl.rar
С уважением, Lost Angel...