gpt4 book ai didi

delphi - 突触:无法从套接字接收数据

转载 作者:行者123 更新时间:2023-12-03 18:19:59 24 4
gpt4 key购买 nike

我将Synapse与阻塞套接字一起使用,并尝试简单地将文本发送到连接的客户端。代码如下:

var
SServer: TTCPBlockSocket;
SClient: TTCPBlockSocket;

implementation
//Create and initialize the Sockets.
procedure TForm1.FormCreate(Sender: TObject);
begin
SClient := TTCPBlockSocket.Create;
SServer := TTCPBlockSocket.Create;
SServer.Bind('127.0.0.1', '12345');
SClient.Connect('127.0.0.1', '12345');
end;

//Wait for connections.
procedure TForm1.FormShow(Sender: TObject);
begin
SServer.Accept;
//SServer.Listen; <- Could also work here?
end;

//Send the string to the connected server.
procedure TForm1.Button3Click(Sender: TObject);
begin
SClient.SendString('hi server');
end;

//Receive the string from the client with timeout 1000ms and write it into a memo
procedure TForm1.Button2Click(Sender: TObject);
var buf: string;
begin
Memo1.Lines.Add(SServer.RecvString(1000));
end;

首先,我单击按钮3,然后单击Button2。这样做不会在memo1字段中写入任何内容。

这不行吗?



****编辑:****



根据skramads的评论,我现在将其分为2个程序。开始了:

客户:
var
SClient: TTCPBlockSocket;

implementation

procedure TForm2.Button1Click(Sender: TObject);
begin
SClient.SendString(Edit1.Text);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
SClient := TTCPBlockSocket.Create;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
SClient.Connect('127.0.0.1','12345');
end;

服务器:
var
Form1: TForm1;
SSocket: TTCPBlockSocket;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
SSocket.Bind('127.0.0.1','12345');
SSocket.Listen;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add(SSocket.RecvString(1000));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SSocket := TTCPBlockSocket.Create;
end;

尽管如此,这仍无法按预期工作。我只是没有那边的数据。

有什么想法吗?

最佳答案

您应该阅读套接字通信的工作方式,例如here(英语)或here(德语)。简而言之:您在服务器端使用listen()的套接字本身并不用于通信,您必须调用accept()来打开另一个套接字作为客户端的伙伴,并使用该套接字发送和接收数据。监听套接字仅用于接受来自其他客户端的其他连接,然后您可以使用它们在一个服务器和多个客户端之间进行并行通信。

也许您应该首先检查一个简单的客户端/服务器演示应用程序。无论您使用Synapse,Indy还是底层API编程,其原理都是相同的。

关于delphi - 突触:无法从套接字接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1254578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com