【发布时间】:2016-05-14 09:44:02
【问题描述】:
我正在使用 Embarcadero C++ Builder,我知道如何打开连接并等待来自服务器端的响应(客户端可以打开连接、发送消息并读取从服务器发送的消息,直到连接关闭)。
客户端:
IdTCPClient1->Connect();
IdTCPClient1->Socket->WriteLn("message from client");
ShowMessage(IdTCPClient1->Socket->ReadLn());
IdTCPClient1->Disconnect();
服务器端:
ShowMessage(AContext->Connection->Socket->ReadLn());
AContext->Connection->Socket->WriteLn("Message from server");
AContext->Connection->Disconnect();
如果客户端在客户端打开连接,现在可以交换消息,但是我需要服务器向所有用户发送消息,这意味着客户端将不知道何时打开连接。我想我正在寻找一些等待服务器消息的事件。我发现的所有示例都在 Delphi 中,而不是 C++。另外,当每个客户端第一次连接时,我创建了一个vector<TIdContext*> 来保存所有连接,效果很好。
【问题讨论】:
-
如果您未连接,则无法发送消息。为什么不连接,然后保持连接打开,这样双方就可以发送消息,而不是立即断开连接?
-
@immibis,为什么?当然,您可以在未连接的套接字上发送消息。只是不是 TCP 消息。
-
看起来 TCP 不是最适合您的传输方式。使用 UDP 可能会更好。
-
@SergeyA TCP 在这里是完全合理的。
-
@immibis,因为何时通过单播向多个客户端发送相同的消息是合理的?
标签: c++ c++builder indy