Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Проблемы с записью в сокет непосредственно после его открытия   Найти похожие ветки 

 
Basilio ©   (2003-05-30 09:58) [0]

делаем:

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket.host:=Machine;
ClientSocket.Port:=Port;
ClientSocket.Open;
MemoLog.Lines.Add("Sending HELO1");
ClientSocket.Socket.SendText("HELO1!");
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket.Socket.SendText("HELO2!");
end;

при нажатии на Button1 текст не посылается (сервер ничего не печатает)!
при нажатии на Button2 - всё ОК. в чём дело?


 
MetalFan ©   (2003-05-30 10:12) [1]

а как ты определяешь, что что-то пришло на сервер???


 
MetalFan ©   (2003-05-30 10:16) [2]

а еще проверяй результат SendText...


 
Fredericco ©   (2003-05-30 11:59) [3]

При открытии сокета, если выбран режим csNonBlockin, то факт того, что сокетное гнездо готово к передаче данных сигнализируется тебе сообщением OnWrite. Да и влюбом случае, если сокет по каким либо причинам не был готов к отправке данных (не был открыт, был переполнен буфер и т.д.), а теперь стал готов - то вызывается процедура OnWrite.


 
Basilio ©   (2003-05-30 17:32) [4]

SendText возвращает ноль!
На сервере повешен обработчик OnClientRead - он вызывает ReceiveText - и от первой кнопки текст не печатается, а от второй - печатается.

решение проблемы применено следующе:

ClientSocket.host:=Machine;
ClientSocket.Port:=Port;
ClientSocket.Open;
while not ClientSocket.Socket.Connected do Application.ProcessMessages;
MemoLog.Lines.Add("Sending HELLO1");
ClientSocket.Socket.SendText("HELLO1");


Вроде работает. Прошу оценить корректность


 
Fredericco ©   (2003-05-30 19:06) [5]

Не корректно.
Так еще более менее:

var
NewConnect:boolean=False;
procedure YouProc;
begin
ClientSocket.host:=Machine;
ClientSocket.Port:=Port;
NewConnect:=False;
try
NewConnect:=True;
ClientSocket.Open;
except
end;
end;
.....
procedure TForm1.ClientSocket1Write(Sender: TObject;
Socket: TCustomWinSocket);
begin
if NewConnect then begin
MemoLog.Lines.Add("Sending HELLO1");
ClientSocket.Socket.SendText("HELLO1");
NewConnect:=False;
end;
end;



 
izx   (2003-05-31 12:01) [6]

ClientSocket.Socket.SendText("HELO1!");
нужно делать не сразу после открытия сокета,
а в событии onConnect


 
Alg   (2003-06-01 04:25) [7]

Угу... соединению время нужно, чтобы встать :-)



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
7-20815
MAS
2003-05-25 16:19
2003.08.07
Файлы


1-20540
Vintik
2003-07-26 15:33
2003.08.07
Как сделать горячие клавиши?


1-20590
SergeySEM
2003-07-24 13:15
2003.08.07
RichEdit Розмер буфера


6-20647
viksoft
2003-05-14 10:25
2003.08.07
Передача файла по UDP - чего то не допонимаю


1-20595
Rustik
2003-07-24 11:42
2003.08.07
Кто-нибудь пробовал формулы для расчета хранить в базе