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

Вниз

Не приходит текст посланый по сокету   Найти похожие ветки 

 
стьюдентЪ   (2006-11-28 17:04) [0]

Странная проблемка появилась, не приходит текст который отправил по сокету, вот код:

отправляю так
.......
ClientSocket1.Host:="127.0.0.1"; //temp;
ClientSocket1.Port:=1005;
try
ClientSocket1.Open;
except
MessageDlg("Connection Failed", MtError, [mbok],1);
end;
ClientSocket1.Socket.SendText(FileName);
ClientSocket1.Socket.SendText(SizeOfFile);
.....
получаю так:
.....
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port:=1005;
ServerSocket1.Active:=True;

end;

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Sm:=Sm+Socket.ReceiveText;  //Sm глобальная переменная типа String
ShowMessage(sm);

end;



в результате чего в ShowMessage пусто

Сокеты в неблокирующем режиме

Подскажите пожалуйса, в чём грабли?
Заранее благодарен


 
стьюдентЪ   (2006-11-28 17:05) [1]

перед отправкой переменные FileName и SizeOfFile не пустые


 
Dmitrij_K   (2006-11-28 18:34) [2]


> Сокеты в неблокирующем режиме

Отправлять надо в OnWrite


 
стьюдентЪ   (2006-11-28 20:21) [3]

>Dmitrij_K
Благодарю


 
Сергей М. ©   (2006-11-29 08:23) [4]


> стьюдентЪ


+ [2]
А принимать, соответственно, в On[Client]Read


 
стьюдентЪ   (2006-11-29 12:36) [5]

Сергей М. ©   (29.11.06 08:23) [4]
благодарю за ответ


 
стьюдентЪ   (2006-11-29 12:46) [6]

Заметил интересную вещ:
если написать так:

ClientSocket1.Host:="127.0.0.1"; //temp;
ClientSocket1.Port:=1005;
try
ClientSocket1.Open;
except
MessageDlg("Connection Failed", MtError, [mbok],1);
end;
if ClientSocket1.Active=True then
ClientSocket1.Socket.SendText(FileName);

то пересылки данных не произойдёт, так как сокет по каким-то прчинам не активен, но если повторно запустить на выполнение процедуру в которой присутствует выше написанный код, то всё пройдёт на ура, или если процедуру соединения засунуть в Button1.Click, а процедуру отправки в Button2.Click, то тоже всё отправится, но если всё засунуть в Button1.Click то отправка произойдёт только со второго клика Button1
Интересно, почему так происходит?


 
Dmitrij_K   (2006-11-29 13:01) [7]


> Интересно, почему так происходит?

потому

> Сокеты в неблокирующем режиме


 
Сергей М. ©   (2006-11-29 13:02) [8]


> почему так происходит?


Потому что неблокирующий режим.

В этом режиме достоверным фактом успешного установления соединения является не факт успешного вызова метода Open(), а факт возникновения события OnConnect (и следом за ним - OnWrite как факт готовности гнезда к передаче данных партнеру по установленному только что соединению)

Бессмысленно передавать что бы то ни было раньше чем возникнет событие OnConnect.


 
стьюдентЪ   (2006-11-29 13:26) [9]

Благодарю за исчерпывающие ответы :)



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

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

Наверх




Память: 0.46 MB
Время: 0.04 c
2-1180087318
DelphiLexx
2007-05-25 14:01
2007.06.17
Фрейм отказывается быть контейнером, для других компонент


15-1179649389
Kltv
2007-05-20 12:23
2007.06.17
Progressbar с поддержкой скинов


1-1176964731
kukuikar
2007-04-19 10:38
2007.06.17
Проверить существует ли сетевой путь или с сети ли сервер


9-1146012342
KiberKot
2006-04-26 04:45
2007.06.17
Книга по OGL


11-1158852707
Vladimir Kladov
2006-09-21 19:31
2007.06.17
Turbo Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский