当前位置:主页>仓库管理软件> 列表

多线程socketdd 找免费财务管理软件

进销存软件版1楼: //服务器端函数,负责发送接受文件的
procedure TGetFileServerThread.ClientExecute;
var
Retxt : string;
n : integer;
Data : array[0..4095] of char;
SocketStream : TWinSocketStream;
begin
while not Terminated and ClientSocket.Connected do try
SocketStream := TWinSocketStream.Create(ClientSocket, 60000
try
FillChar(Data, SizeOf(Data), 0);
if SocketStream.Read(Data, SizeOf(Data)) = 0 then begin
//如果1分钟之内没有数据关闭socket
ClientSocket.Close;
Terminate;
end;
Retxt := Trim(Data);
if length(Retxt) > 0 then begin
if Pos('''', Retxt) > 0 then
SendFile(Retxt)
else
Getfile(Retxt);
end;
finally
SocketStream.Free;
end;
except
HandleException;
end;
end;
//客户端函数,当有文件信息时调用此函数
//socket类型:ctNonBlocking
procedure TReceiveFileThread.GetFileinfo(Fileinfo: string);

var
i : integer;
FileTypestr : string;
begin
try
if not ClientForm.ClientSocketFile.Active then
ClientForm.ClientSocketFile.Open;
if ClientForm.ClientSocketFile.Active then begin
Split(Fileinfo, ''*'', Fileinfolist);
i := Pos(''\'', Fileinfolist[0]);
Filenamestr := Copy(Fileinfolist[0], i + 1, length(Fileinfolist[0]) - i);
FileSourcestr := Fileinfolist[2];
Filestream := TFileStream.Create(CurrentApp_Dirstr + ''\'' + Fileinfolist[0],
fmCreate
or fmOpenWrite);
filesize_int := strtoint(Fileinfolist[1]);
ClientForm.ClientSocketFile.Socket.SendText('''' + Fileinfolist[0]);
end
except
end;
end;

2楼: ?? 如免费财务管理软件

3楼: 先 CLOSE ClientForm.ClientSocketFile.close 一下。然后再OPEN 试试

4楼: 用indy好了。

5楼: ClientSocketFile 和 ClientSocket ??

6楼: 使用UDP通知服务器


然后如果服务器收不到 就多发几次 一定能收到
然后 收到服务器回复后就建立TCP联接

进销存软件版7楼: 使用Indy

8楼: 问题还没解决,算了结贴!

9楼: 多人接受答案了。