Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

передача файлов через TserverSocket TclientSocket   Найти похожие ветки 

 
kolj ©   (2006-06-19 14:04) [0]

Как передать файл по сети используя компоненти TserverSocket TclientSocket ? Дайте  пожалуйста работающий пример.


 
medved_68 ©   (2006-06-19 14:30) [1]

Пиши на мыло кину рабочий исходник


 
Сергей М. ©   (2006-06-19 14:47) [2]


> medved_68 ©   (19.06.06 14:30) [1]


Не облажайся)


 
novill ©   (2006-06-19 17:06) [3]


> medved_68

а почему скрываешь? или он больше 8 кб?


 
Verg ©   (2006-06-19 23:39) [4]

http://webfile.ru/996438


 
medved_68 ©   (2006-06-20 13:32) [5]

U>Сергей М.<
Постараюсь твоими молитвами облажаться на все воля Windows


 
Сергей М. ©   (2006-06-20 13:42) [6]


> на все воля Windows


При чем тут Windows ?

Я наблюдал фрагменты твоих прогр.текстов, где ты используешь Send-методы этих компонентов (в non-blocking-режимах) как процедуры, а не как функции. Это и будет причина лажи, когда твой код будет работать в условиях интерсети.


 
medved_68 ©   (2006-06-20 17:46) [7]


> Сергей М.

Так это же для "наблюдателей". А что бы чики-чики, надо еще над моим кодом и мозгой пошевелить, ведь пример то работает, а там как тебе надо так и делай....

> При чем тут Windows ?

По типу: "С нами бог и Андреевский флаг".
С уважением .....
P.S. Кстати подскажи насчет TServerClientThread толковую инфу или простенький исходник, ну не разрушается он у меня толково.....


 
Сергей М. ©   (2006-06-21 09:01) [8]


> насчет TServerClientThread .. не разрушается он у меня толково


А его не надо разрушать явно ... За это отвечает TServerWinSocket


 
medved_68 ©   (2006-06-21 13:59) [9]


> Сергей М.

В том то и дело что я и не пытаюсь его разрушить!!!! Примерный код потока таков:

procedure TServerClientThread.ClientExecute;
begin
Potok:=TWinSocketStream.Create(ClientSocket,100000);
//Затем работаем с потоком
//по окончании
Potok.Free;
end;


И при выходе лезет ошибка  "код5 отказано в доступе"
т.е именно когда необходимо, я так понимаю выйти из процесса с FreeOnTerminate:=True;
Пока поток крутиться и работает с данными, все в норме все отсылается и принимается. 100000 пробовал менять и на infinite, мало ли, может у меня ошибка лезет при Potok.Free; Не полечило. Причем ошибка лезет до наступления события TForm1.ServerSocketEndThread. Я так понял именно при разрушении потока. Может я не так понимаю процесс??? Варианты есть????
Если тоже самое делаю на TThread, то без проблем все разрушается и никаких ошибок. Но ведь не зря же создали TServerClientThread для многопоточных серверов.


 
Сергей М. ©   (2006-06-21 15:09) [10]


> ошибка лезет при Potok.Free


Какая ?


 
medved_68 ©   (2006-06-21 15:37) [11]


> Сергей М

Сначала куча Access Violant" ов а затем

> "код5 отказано в доступе"

Только не при Potok.Free ,а при завершении ClientExecute; после конечного end; но до наступления события TForm1.ServerSocketEndThread. Наверное я несколько хм. не так выразился.
Ошибка вылезает при разрушении процесса TServerClientThread.ClientExecute; т. е. после окончания данной процедуры. Я так понимаю, что если FreeOnTerminate:=True; процесс сам уничтожится, а у меня почему то не хочет он сам уничтожаться. Вернее даже, при самоуничтожении и возникает данная ошибка, по крайней мере я так думаю. Может дело в кешировании потоков ServerSocket"ом, хотя я об этом пока еще смутно представляю, нет достаточной инфы.


 
Сергей М. ©   (2006-06-22 08:15) [12]

Убирай отовсюду FreeOnTerminate:=True.


 
medved_68 ©   (2006-06-22 08:36) [13]


> Сергей М. ©   (22.06.06 08:15) [12]
> Убирай отовсюду FreeOnTerminate:=True.

Так у меня и нет его. Он по умолчанию выставляется при вызове cтандартного конструктора TServerClientThread.Create; Я просто смотрел исходник  TServerClientThread его там тоже нет, он тянется от TThread. Но если предположить, что дело в этом и явно определить FreeOnTerminate:=False, то тогда возникает вопрос: "Каким образом данный процесс будет разрушаться после отработки, за ненадобностью, мне его самостоятельно разрушать???". Не солидно как-то, типа проверяй, отработал там какой-то процесс или нет.


 
Сергей М. ©   (2006-06-22 10:28) [14]


> Я просто смотрел исходник  TServerClientThread его там тоже
> нет, он тянется от TThread


Цитата из исходников:

constructor TServerClientThread.Create(CreateSuspended: Boolean;
 ASocket: TServerClientWinSocket);
begin
 FreeOnTerminate := True;
 FEvent := TSimpleEvent.Create;
 inherited Create(True);
 Priority := tpHigher;
 ReActivate(ASocket);
 if not CreateSuspended then Resume;
end;


> если предположить, что дело в этом и явно определить FreeOnTerminate:
> =False


Не нужно ничего предполагать и переопределять, тебя это вообще заботить не должно.

Твоя забота - грамотно и без непогашенных исключений отработать свою ClientExecute, все остальное (кэширование и разрушение тредов) компонент возьмет на себя.


 
medved_68 ©   (2006-06-22 10:46) [15]


> Сергей М


> begin
>  FreeOnTerminate := True;
>  FEvent := TSimpleEvent.Create;

Согласен обшибся=:), сейчас накидаю небольшой пример попробую, хотя я уже их столько для себя накидал... А исход один и тот же=:(


 
Сергей М. ©   (2006-06-22 13:32) [16]

Под рукой всегда есть исх-ки scktsrvr.exe - там как раз и используется св-во ServerType = stThreadBlocking


 
medved_68 ©   (2006-06-22 15:21) [17]


> Под рукой всегда есть исх-ки scktsrvr.exe - там как раз
> и используется св-во ServerType = stThreadBlocking

За это спасибо, попробуем въехать
С уважением...



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

Форум: "Сети";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.052 c
1-1159950412
Sergey2
2006-10-04 12:26
2006.11.12
журнал в IE


2-1161964015
AlexanderMS
2006-10-27 19:46
2006.11.12
Хранить String и Widestring в одном поле записи.


2-1162015160
Riply
2006-10-28 09:59
2006.11.12
Видимость переменных из private.


2-1162129071
AlexanderMS
2006-10-29 16:37
2006.11.12
Hint к строке состояния (StatusBar).


2-1161697308
Дева
2006-10-24 17:41
2006.11.12
Перемещение в TDBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский