![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TclientSocket [D6, WinXP]
LEONardo © (2004-07-02 12:31:00)Пожалуйста дайте дельный ответ, душа кричит! Почему в приведенном ниже случае TclientSocket не передает строку
серверу???
Program ...;
Uses ...;
var Cl:TclientSocket;
begin
CL:=TclientSocket.create(nil);
CL.address:='127.0.0.1';
CL.port:=15000;
CL.clientType:=mtNonBlocking;
CL.open; //or CL.active:=true;
//соединение произошло успешно СЕРВАК увидел нас
//(обработа OnConnect)
CL.socket.sendText('Message From client');
CL.close;
end;
Digitman (2004-07-02 13:23:00) [1]
> LEONardo (02.07.04 13:10) [5]
сходи на http://book.itep.ruв раздел "Winsock"
весьма полезный ресурс для понимания происходящего в недрах TClientSocket, особенно когда исх.текст модуля scktcomp.pas открыт перед глазами
LEONardo (2004-07-02 13:10:00) [2]НУ лан
всем дякую
Digitman (2004-07-02 13:09:00) [3]
> LEONardo (02.07.04 13:04) [2]
просто установи ClientType = ctBlocking, тогда логика коннекта и према/перема передачи будет синхронная, т.е. после ClientSocket.Open коннект гарантированно осуществлен (если не было при этом возбуждено исключение), и следом можно смело вызывать методы приема/передачи
Iraizor (2004-07-02 13:07:00) [4]Работай в синхронном режиме - гораздо проже будет.или же, делая вывод из поста [1], могу посоветовать не сразу после открытия сокета слать текст, а в цикле отловить OnConnect и уже потом выполнять какие-либо действия.
LEONardo (2004-07-02 13:04:00) [5]Напиши пожалуйста, как можно обойти данную ситюєйшн?
С момента CL.port:=15000
Digitman (2004-07-02 12:43:00) [6]
> CL.open; //or CL.active:=true;
> //соединение произошло успешно СЕРВАК увидел нас // не выдумывай, факт установления коннекта есть факт события OnConnect, а не твои домыслы
> //(обработа OnConnect) это как так ?! событие-то - АСИНХРОННОЕ !
> CL.socket.sendText('Message From client'); // в пустоту посылаешь - коннект еще не установлен