客户端代码:ar
  fStream:TMemoryStream;
  i:integer;
  s:String;
begin
  Result:=false;
  IDClient.Host:=hostname;
  IDClient.Port:=6060;
  try
    IDClient.Connect(5000);
    try
      edLog.Items.Add(hostname+sfile);
      fStream:=TMemoryStream.Create;
      IDClient.WriteLn(sfile);
      try
        IDClient.ReadStream(fStream,qryRecordfsize.AsInteger);
      except
        ShowMessage('读文件失败!');
        IDClient.Disconnect;
        Exit;
      end;
      if FileExists(ExtractFilePath(paramStr(0))+'temp.wav') then
         DeleteFile(ExtractFilePath(paramStr(0))+'temp.wav');
      fStream.SaveToFile(ExtractFilePath(paramStr(0))+'temp.wav');
      fStream.Free;
      try
        MediaPlayer1.DeviceType:=dtAutoSelect;
        MediaPlayer1.FileName:=ExtractFilePath(paramStr(0))+'temp.wav';
        MediaPlayer1.Open;
        MediaPlayer1.Play;
      except
        ShowMessage('播放失败,请确认文件是否存在或者文件是否已经损坏');
        IDClient.Disconnect;
      end;
    except
      edLog.Items.Add('远程主机无相应') ;
      IDClient.Disconnect;
      Exit;
    end;
  except
    edLog.Items.add('连接服务器'+hostname+'失败!');
    Exit;
  end;服务器端代码:
procedure TfrmServer.btnDisConnectClick(Sender: TObject);
begin
  if  IDServer.Active then IDServer.Active:=false;
  btnConnect.Enabled:=true;
  btnDisConnect.Enabled:=false;
end;procedure TfrmServer.btnConnectClick(Sender: TObject);
begin
  try
    IDServer.Active:=true;
  except
    MessageBox(Handle,'服务器激活失败!','提示',MB_OK+MB_ICONINFORMATION);
  end;
  MessageBox(Handle,'服务器激活成功!','提示',MB_OK+MB_ICONINFORMATION);
  btnConnect.Enabled:=false;
  btnDisconnect.Enabled:=true;
end;procedure TfrmServer.IDServerExecute(AThread: TIdPeerThread);
var
  filePath:String;
  i,fSize:Integer;
  fileStream:TMemoryStream;
begin
  filePath:=AThread.Connection.ReadLn();
  edLog.Items.Add(filepath);
  if filepath<>'' then
  begin
    i:=Pos(filepath,'SI') ;
    fsize:=StrToInt(copy,1,i);    fileStream:=TMemoryStream.Create;
    fileStream.LoadFromFile(trim(copy(filepath,i+2,len(filepath)-i-1));
    AThread.Connection.WriteStream(fileStream);
    fileStream.Free;
  end;
end;procedure TfrmServer.FormCreate(Sender: TObject);
begin
  Clients:= TThreadList.Create;
  IDServer.Active:=false;
  btnConnect.Enabled:=true;
  btnDisConnect.Enabled:=false;
end;procedure TfrmServer.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  try
    if  IDServer.Active then IDServer.Active:=false;
  except
  end;
  Clients.Free;
end;procedure TfrmServer.IDServerConnect(AThread: TIdPeerThread);
begin
  edLog.Items.Add('来自'+AThread.Connection.Socket.Binding.PeerIP+'的连接已经被接纳');
  AThread.Connection.WriteLn('100:欢迎连接Tcp服务器');
end;