Tôi có một ứng dụng máy chủ đơn giản viết bằng Delphi sử dụng thành phần TTCPServer nó có một thủ tục sự kiện OnAccept thực sự cơ bản như dưới đây ...socket đơn giản với php và delphi?
"Listener vào 127.0.0.1 trên cổng: 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;
Và một trang php đơn giản như thế này ...
<?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);
?>
Bây giờ vấn đề là khi tôi đang cố gắng viết vào ổ cắm kết nối với trang php không xảy ra lỗi nhưng văn bản nhận được trong ứng dụng Delphi (người nghe) chỉ cho tôi kết quả sai một số thứ như thế này "效 汬 ⸮!"
tôi nên làm gì ???
Bạn đang sử dụng phiên bản Delphi nào? 'Receiveln()' trả về một 'Chuỗi', là một' UnicodeString' trong D2009 +, nhưng 'TTCPServer' không hỗ trợ Unicode! Bạn thực sự không nên sử dụng 'TTCPServer' anyway, nó là một thành phần CLX lỗi thời và không được chấp nhận. Sử dụng một cái gì đó hiện đại hơn, chẳng hạn như từ Indy, ICS hoặc Synapse. –