|
接受部分(有个用户和密码check,你取消就可以) procedure TTCP_Server.IdTCPServerExecute(AThread: TIdPeerThread); var FStream : TFileStream; FileName : String; CmdStr : String; begin CmdStr :=AThread.Connection.ReadLn(); if CompareStr(Copy(CmdStr,1,6),'<SEND>')=0 then begin //1 Delete(CmdStr,1,6); Cmd := '上传文件'; FileName := CmdStr; if FileExists(ExtractFilePath(Application.ExeName)+FileName) then DeleteFile(ExtractFilePath(Application.ExeName)+FileName); try FStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+FileName,FmCreate); AThread.Connection.ReadStream(FStream,2048,true); Finally FStream.Free; AThread.Connection.Disconnect; end; end //1 else if CompareStr(Copy(CmdStr,1,6),'<AGET>')=0 then begin //2 Delete(CmdStr,1,6); Cmd := '下载文件'; FileName := CmdStr; if FileExists(ExtractFilePath(Application.ExeName)+FileName) then begin try FStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+FileName,FmOpenRead); AThread.Connection.WriteStream(FStream,True,False); Finally FStream.Free; AThread.Connection.Disconnect; end; end else begin AThread.Connection.WriteLn('Failed'); AThread.Connection.Disconnect; end; end //2 else if CompareStr(Copy(CmdStr,1,6),'<USER>')=0 then begin //3 Delete(CmdStr,1,6); User := UpperCase(Trim(DecryptString(CmdStr,20504))); //CmdStr; if CompareStr(User,'XDM')=0 then begin Memo1.Lines.Add('User: '+User); CmdStr :=''; end else begin Memo1.Lines.Add('User: '+User+' 非法登陆,已关闭连接'); CmdStr := ''; AThread.Connection.WriteLn('<Failed>'); AThread.Connection.Disconnect; end; end //3 else if CompareStr(Copy(CmdStr,1,6),'<PASS>')=0 then begin //4 Delete(CmdStr,1,6); Password := DecryptString(CmdStr,20504); //CmdStr; if CompareStr(Password,'123abc')=0 then begin Memo1.Lines.Add('Login..........Accepted'); Memo1.Lines.Add('Connected......'+DateTimeToStr(Now)); CmdStr := ''; AThread.Connection.WriteLn('<Accepted>'); end else begin Memo1.Lines.Add('Password Wrong...Login Failure'); AThread.Connection.WriteLn('<Failed>'); CmdStr :=''; AThread.Connection.Disconnect; end; end; //4 end;
主要发送部分 procedure TTCP_Client.BtnSendClick(Sender: TObject); var FStream : TFileStream; begin if IdTcpClient.Connected then begin IdTcpClient.WriteLn('<SEND>'+ExtractFileName(FileName)); if FileName = '' then MessageBox(Handle,'没有选择文件','Error',MB_OK) else begin try FStream := TFileStream.Create(FileName,FmOpenRead); FStream.Position := 0; FStream.Seek(0,0); IdTcpClient.WriteStream(FStream,true,false); Finally FStream.Free; IdTcpClient.Disconnect; end; Memo1.Lines.Add('Transferred OK'); end; end else begin MessageBox(Handle,'没有连接服务器','Error',MB_Ok); end; end;
|