![]() |
|
|
|
|
#1
|
|||
|
|||
|
Вобщем проблема такая.
При коннекте к серверу клиент посылает на него определённый номер(один клиент каждый раз один и тот же номер), предположим 1111, другой клиент пусть 2222. Я хочу чтоб при коннекте создавался файл, название которого этот номер, и чтоб всё что приходило на сервер от этого клиента писалось в этот файл. Уже много где перелазил, пересмотрел, но ничего не выходит. Я так понимаю нужно использовать socket.data? И записывать туда номер в событии ServerSocket1ClientRead. Пробовал разными способами, но всё время ошибки то с памятью то ещё какие. Кто может помочь? |
|
#2
|
|||
|
|||
|
1 день - 1 просмотр этой темы и тот мой при её создании.
Да, помирает форум видимо. |
|
#3
|
|||
|
|||
|
Есть компонент в Д7 TIdTCPServer лучше использовать его.
Событие onExecute происходит, когда клиент пишет в сервер, тогда обработку будет Код:
procedure TForm1.ServerExecute(AThread: TIdPeerThread);
var f: TFileStream;
s,FileName,Ip,InBox,OutBox,s1: string;
List:TStringList;
Res,i,Err,Count,Size:integer;
Rect:TRect;
begin
// Читаем номер 1111 или 2222
s := AThread.Connection.ReadLn;
With AThread.Connection do
begin
// Получаем размер файла
Size:=ReadInteger();
f := TFileStream.Create(s, fmCreate );
try
ReadStream(f,Size);
//AddLog('Принят файл '+s+' от '+ip);
// Переименовываем файл
F.Free;
except
//AddLog('Ошибка приема файла '+s);
F.Free;
end;
Disconnect;
end;
end; |
|
#4
|
|||
|
|||
|
Спасибо. Я уже без indy сделал.
Если будут лаги перейду на них может. |