草庐IT

android - 如何为下一个客户端连接正确重启 Indy TCP Server?

我有一个IndyTCP服务器,客户端连接到它,发送信息,服务器接收,创建一个巨大的TStringList并发送回客户端。这种情况每天发生数千次,所以我决定将六台服务器放在不同的.exe上,在不同的端口上执行相同的操作,并让客户端应用程序每次连接到一个随机端口。发生了什么:1)从客户第一次尝试连接到他收到他需要的所有信息的那一刻是相当高的,就像他做了两次工作。2)大约有10%的时间客户端尝试连接,而服务器似乎忽略了该尝试,并且客户端没有触发except重试,然后卡住了。服务器:MaxConnections设置为1ListenQueue为0TerminateWaitTime到5000Reu

delphi - 使用 Indy 创建 TCP TUNNELING 系统

您好,是否可以创建充当tcp代理服务器的中间应用程序?它将由两个组件组成。IdTCPServer和IdTCPClient。想法是:Application>连接到IdTCPServer>所有数据都被重定向到>IdTCPClient连接到目标。并且TCPClient收到的数据会重定向到IdTCPServer和Application。我做了这么简单的应用程序,它在HTTP请求中工作,但是当我尝试将它用于RDP客户端时它失败了(我收到协议(protocol)错误的错误消息)。有可能吗?我使用ReadByte方法,每个字节都发送到另一个IOHandler。我想创建某种允许通过NAT连接的虚拟TC

Delphi:(Indy)发送一个标题 Record 后跟一个文件

我目前正在尝试使用Indy在TCP之上编写自定义的更高级别的协议(protocol)。本质上,我想发送一条记录(使用流),但这条记录可以指示后面的x个字节将是一个图像文件。因此,当服务器收到记录时,如果它的内容表明它后面有图像,则需要将记录和图像数据分开。varSegment:TDPPSegment;Segment2:TDPPSegment;Buffer:TIdBytes;Buffer2:TIdBytes;Mem:TMemoryStream;beginif(Client.Connected)thenbeginSegment.NameStr:='Adrian';Segment2.Name

delphi - Indy、发送线程和销毁的上下文

我使用Indy的TIdTCPServer(D2009,Indy10)与客户端应用程序通信。在OnExecute方法中,我创建了一个任务并将其排队。工作线程执行任务并将其放入发送队列。然后发送队列将响应发送到客户端。在发送线程中,我循环遍历服务器的上下文列表并查找与任务中存储的IP和端口信息相匹配的上下文。然后执行一些有时会引发访问冲突的发送命令(我猜上下文在发送过程中被破坏)。现在问题来了:如何确保在发送响应之前上下文没有关闭?Indy是否可以从单独的线程发送,或者一切都应该在Indy线程中完成? 最佳答案 您可以尝试在发送数据时保

Delphi Indy - 如何为 Indy 10 的 SSL-TCP 客户端/服务器链接获取 SSL 证书

我对SSL和这些加密的东西完全陌生,但我需要让在移动设备上运行的客户端和服务器DelphiXE6应用程序进行通信。必须对TCP通信进行安全加密。首先,我简单地编写了基于Win32客户端和服务器交换字符串的Delphi/IndyTIdTCPServer/TIdTCPClient。(出自SourceForge上的indy10clieservr演示:svn://svn.code.sf.net/p/indy10clieservr/code/1_sampleSimpleStringExchange)我试图通过在服务器上添加TIdServerIOHandlerSSLOpenSSL组件和在客户端上添

Delphi - 使用 Listview 管理 Indy TCPServer 连接

我需要从IdTCPServer向特定连接的IdTCPClient发送一条字符串消息。一开始我使用的是列表框,所以我在客户端连接时将主机名添加到列表框,并在断开连接时将其删除。当时,RemyLebeau给了我这个提示:procedureTfrmMain.sendButtonClick(Sender:TObject);varIndex:Integer;Ctx:TIdContext;beginIndex:=ListBox.ItemIndex;ifIndex=-1thenExit;Context:=TIdContext(ListBox.Items.Objects[Index]);//useCo

Delphi - 使用 Indy 检查客户端状态的简单 TCP 客户端/服务器

我最近开始玩Indy10(来自DelphiXE3)和TCP连接。现在,我正在尝试创建一个简单的服务器应用程序来检查客户端状态。但是,当我尝试在某些客户端已连接的情况下停用TCPServer时,客户端会断开连接,但TCPServer会停止应答。我在某处读到TCPServer应该可以毫无问题地处理客户端的断开连接。我必须在OnExecute事件上添加一些代码才能解决这个问题吗?代码如下:procedureTfrmMain.btnConnectClick(Sender:TObject);beginIf(notTCPServer.Active)ThenTryTCPServer.Bindings

delphi - Indy 10 中的双向 TCP 通信?

我正在使用TIdCmdTCPClient和TIdCmdTCPServer。突然发现我可能喜欢双向通信。什么最好?我应该使用其他一些组件吗?如果是这样,哪个?或者我应该拼凑并让“客户端”轮询“服务器”以询问它是否希望传达任何信息?这是一个非常小的系统。两个客户端和十个服务器,每30到60秒突发一个tarnscation,每天一次持续几分钟,因此轮询的开销是无关紧要的。我只是想知道是否有“正确”的方法。更新:这确实是一个非常简单的系统。流量很少,一切都很简单。所有传输都指示偶数类型和可选的单个参数。[]例如"HERE_IS_SOME_DATA42"这可以双向发送,悬停在这里不是“回复”。只

delphi - 首先在 Indy 10 的 delphi 中从服务器开始通信

在由TCPServer/Client组件编写的Socket应用程序中,通常我们先激活服务器端,然后将客户端连接到服务器,当我们需要从一侧到另一端获取或发送数据时,首先从客户端向服务器发送一个命令,然后将开始通信。但问题是我们总是需要从客户端开始对话!我想问有什么想法可以在没有客户端请求的情况下从服务器端随机开始对话吗?我需要这个功能来从服务器端通知客户端。例如,当注册用户(客户端)连接到服务器时,其他连接的用户(在其他客户端),必须从服务器向所有用户(如YahooMessenger)发送通知。我正在使用TIdCmdTCPServer和TIdTCPClient组件

android - 适用于 Win32/Android 的基本 Indy TCP 客户端/服务器

我正在尝试设置一个非常基本的单一客户端/服务器系统,这样我就可以从我的PC发送一个字符串到Android平板电脑。平板电脑对该字符串进行处理,然后将字符串发送回PC。代码:服务器端(平板电脑)procedureTForm1.Button1Click(Sender:TObject);//starttheserverbeginIdTCPServer1.Bindings.Clear;IdTCPServer1.Bindings.Add.SetBinding('xxx.xxx.x.x',4405);//forthexxx'stheIPadresofthetabletIdTCPServer1.Ac