我使用 TClientSocket 与 Python 服务器进行了套接字通信。在意识到我只能在客户端使用 TClientSocket 后,我决定使用 INDY。我使用 Delphi Indy 为客户端和服务器制作了一个小测试应用程序。这行得通。
但是它现在不适用于 Python。Python 接收连接和消息就好了,但是当它响应时,我的 Delphi 什么也得不到。我对 fIdTCPClient1.IOHandler.ReadLn() 的调用只是永远坐在那里。
要从非 INDY 服务器向 INDY 发送消息,您需要做一些特别的事情吗?
procedure TForm3.Button3Click(Sender: TObject);
begin
fIdTCPClient1 := TIdTCPClient.Create(nil);
fIdTCPClient1.Port := 20200;
fIdTCPClient1.Host := '127.0.0.1';//'localhost';
fIdTCPClient1.Connect;
fIdTCPClient1.IOHandler.WriteLn('You there');
msg := fIdTCPClient1.IOHandler.ReadLn();
ShowMessage(msg);
end;
Python端的连接
HOST = '127.0.0.1' # Localhost
PORT = 20200
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((HOST, PORT))
s.listen(1)
except socket.error:
s.close()
s = None
return -1
Python 发送/接收
data = conn.recv(4096).strip()
print data
conn.send('I am here')