Я написал простую программу передачи файлов, которая работает в Windows 7. Я запускаю эту программу как сервер на одном компьютере и клиент на другом. Клиент отправляет запрос на передачу файла, а затем сервер сначала отправляет имя файла. Затем клиент подтверждает, что он получил имя файла и отправляет содержимое файла.
Эта программа работала безупречно на XP. Сейчас мы пытаемся запустить его на компьютерах с Windows 7, и у него есть проблема. Проблема в том, что каждый раз, когда сервер отвечает клиенту с именем файла.
Сервер отправляет текст, вызывая ServerSocket1.SendText ('File1.dat').
То, что получает клиент, похоже на китайские или вьетнамские символы. Итак, моя программа не работает. Моя клиентская программа должна знать имя файла. Таким образом, он знает, где сохранить его в определенном месте в hardrive.
Я думаю, функция SendText принимает AnsiString, и я посылаю строковые данные. Как вы думаете, в этом причина?
UPDATE
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendText(AnsiString('calibrate.log'));
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Buffer:array[0..999] of char;
begin
Socket.ReceiveBuf(Buffer,Socket.ReceiveLength);
end;