mam prostą aplikację serwera napisany w Delphi za pomocą komponentu TTCPServer to ma naprawdę podstawowe procedury zdarzenia OnAccept jak poniżej ...proste gniazdo z php i delphi?
„Listener na 127.0.0.1 na porcie: 10000”
procedure TMainWindow.TcpServerAccept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
S: String;
begin
S := ClientSocket.Receiveln();
ShowMessage(S);
ShowMessage(IntToStr(Length(S)));
Memo1.Lines.Add(S);
end;
I prosta strona php tak ...
<?php
$address = '127.0.0.1';
$port = 10000;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, $address, $port);
socket_set_option($sock, SOL_SOCKET, SO_KEEPALIVE, 1);
$msg = 'Hello...!';
echo socket_write($sock, $msg, strlen($msg));
socket_close($sock);
?>
teraz problem jest gdy próbuję napisać w gniazdu ze strony php wystąpił żaden błąd, ale otrzymał tekst w aplikacji Delphi (słuchacz) pokazują mnie zły wynik coś takiego jak "效 汬 ⸮!"
co mam zrobić?
Jakiej wersji Delphi używasz? 'Receiveln()' zwraca 'String', który jest' UnicodeString' w D2009 +, ale 'TTCPServer' nie obsługuje Unicode! Naprawdę nie powinno się używać 'TTCPServer' tak czy inaczej, jest to przestarzały i przestarzały komponent CLX. Użyj czegoś bardziej nowoczesnego, np. Z Indy, ICS lub Synapse. –