привет у меня Builder C++ 6 подскажите пример кода простого соединения например к mail.ru и получения в Memo заглавной страницы Не могу разобраться я делал так и не получилось PHP: ClientSocket1->Port =80; ClientSocket1->Host = "mail.ru"; ClientSocket1->Open(); ClientSocket1->Socket->SendText("GET / HTTP/1.1"); Memo1->Text = ClientSocket1->Socket->ReceiveText();
Посылай текст вида PHP: GET / HTTP/1.1#13#10#13#10 #13#10#13#10 - это \r\n\r\n. Эти 4 символа нужно посылать в конце GET запроса.
сделал так и все равно в Memo пусто PHP: ClientSocket1->Port =80; ClientSocket1->Host = "94.100.191.201"; ClientSocket1->Open(); ClientSocket1->Socket->SendText("GET / HTTP/1.1#13#10#13#10"); Memo1->Lines->Add(ClientSocket1->Socket->ReceiveText());
Нет, ну это неправильно. В Delphi можно отправить так: PHP: ClientSocket1.Socket.SendText('GET / HTTP/1.1' + #13#10#13#10); Как в C++ - не знаю точно может быть, также.
Гы) Для того, чтобы получать данные от TClientSocket , нужно пройти во вкладку Enents и там найти событие OnRead, кликнуть по нему дважды, откроется обоработчик события OnRead. Там пишем например так: Memo1->Text = Socket->ReceiveText(); И каждый раз как только будут приходить данные на сокет, будет срабатывать событие OnRead. P.S. TClientSocket ориентирован на события, поэтому ты не сможешь вызвать SendText(); а после ее завершения тут же ждать ответа. Ответ всегда будет принимать событие OnRead();
Code: int len; char buff[1024]; len = wsprintf(buff, "GET %s HTTP/1.0\r\n\ Host: %s\r\n\ User-agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6\r\n\ Accept: */*;q=0.9\r\n\ Connection: close\r\n\r\n",get,host); ClientSocket1->Host = "94.100.191.201"; - не подключайся никогда по IP, используй всегда доменное имя, так как IP может меняться динамически + на виртуальных серверах вся адресация крутится вокруг доменного имени
А msdn'овцы ссут коннектиться к сервакам по доменному имени, т.к. оно в отличие от ip может быть подменено злоумышленниками :-D
События - это хорошо. Можно выполнить много всего, и не ждать результата выполненного действия, если он и вообще будет. Есть конечно такие понятия как тайм-аут, но это все не то.