Форум: "Сети";
Текущий архив: 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.013 c