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

Вниз

помогите разобратса из TcpServer TcpClient   Найти похожие ветки 

 
integery   (2005-09-08 19:07) [0]

есть програма сервер , и есть около 40 клиентов , посилаю собщение клиентам на получения файла из сервера , как организовать штоб клиенты по очереди законектились и получили файл. Я использую вот етод код , поправте пожалуста :

procedure TForm1.startLoad;
var s:string;
  buf: array[0..128] of char;
  len,l,l1,i:integer;
  f:file of char;
begin
    try
   TcpClient1.Active:=true;
   TcpClient1.Sendln("S");
   s:=TcpClient1.Receiveln;
   len:=strtoint(s);
   l:=0;
   AssignFile(f,"c:\temp\mon.cfg");
   Rewrite(f);
     repeat
       l1:=TcpClient1.ReceiveBuf(buf[0],128,0);
       l:=l+l1;
       for i:=0 to l1-1 do Write(f,buf[i]);
      until l=len;
finally
  if TcpClient1.Connected then TcpClient1.Disconnect;
  CloseFile(f);
end;

end;

procedure TForm1.TcpServer1Accept(Sender: TObject;
 ClientSocket: TCustomIpClient);
var
s:string;
fs:TFileStream;
begin
s:=ClientSocket.Receiveln;
   if s="S" then
   begin
      fs:=TFileStream.Create("C:\temp\monic.cfg",fmOpenRead);
       ClientSocket.Sendln(inttostr(fs.Size));
       ClientSocket.SendStream(fs);
        fs.Free;
    end;
end;


 
Tor ©   (2005-09-09 10:09) [1]

Чето я так и не понял вчем вопрос. Через этот код оно подключается или нет? Если нет что говорит. Зачем искать то чего возможно нет.
Я юзаю инди. Тама все клиенты в своем потоке подключаются, а одновременно или по очереди это уже не моя забота и хоть 41.
А файл передавал бы через файловый поток. Если надо могу схематический пример набросать.


 
integery   (2005-09-09 12:28) [2]

есть код
procedure TForm1.SpeedButton1Click(Sender: TObject);
var s:string;
  buf: array[0..128] of char;
  len,l,l1,i:integer;
  f:file of char;
begin
   try
   TcpClient1.Connect;
   Memo1.Lines.Add("get");
   TcpClient1.Sendln("S");
   s:=TcpClient1.Receiveln;
   Memo1.Lines.Add("Receiving: "+s);
   if s<>"" then
          begin
           len:=strtoint(s);
            l:=0;
               try
                   AssignFile(f,"c:\temp\mon.exe");
                   Rewrite(f);
                       repeat
                         l1:=TcpClient1.ReceiveBuf(buf[0],128,0);
                         l:=l+l1;
                         for i:=0 to l1-1 do Write(f,buf[i]);
                        until (l=len);
               finally
               CloseFile(f);
               end;
          end;
   finally
   if TcpClient1.Connected then TcpClient1.Disconnect;
   end;
end;

когда сервер вирубить клиент виснет наверное на цикле repeat как проверить што все дание принято а так получаетса сервер отрубилса клиет подвис а полученой файл загрузилса на половину.


 
integery   (2005-09-09 12:48) [3]

зделал
в цикле поставил проверку

repeat
l1:=TcpClient1.ReceiveBuf(buf[0],128,0);
if l1 < 0 then Abort;
......................
на сколько можно увеличить buf щас 128 а какой max ???


 
Digitman ©   (2005-09-09 15:08) [4]


> на сколько можно увеличить buf щас 128 а какой max ?


в дан.случае max < размер стека тек.трэда



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

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

Наверх




Память: 0.46 MB
Время: 0.014 c
2-1133285271
STRINGGRID
2005-11-29 20:27
2005.12.18
TABLICA STRINGGRID


2-1133174869
Stas_on
2005-11-28 13:47
2005.12.18
Рисование стрелок под любым углом


14-1132841832
oldman
2005-11-24 17:17
2005.12.18
Локомотив победил!!! (анализы футболов прошу не постить!)


14-1132627955
Рсдрп
2005-11-22 05:52
2005.12.18
Как проще откомпилировать программу на Си++?


8-1121181725
MxQ
2005-07-12 19:22
2005.12.18
Управление воспроизведением звука





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