我正在使用Delphixe6来实现一个简单的客户端/服务器连接。客户端表单应该有一个TEdit组件,并且应该将Edit.text字符串发送到服务器备忘录。我想使用Indy组件:TIdTcpServer和TIdTcpClient,但我不知道如何在客户端和服务器之间建立简单的连接。非常感谢您的帮助。 最佳答案 服务器:在你的创建、初始化函数中的任何地方:FIndySrv:=TIdTCPServer.Create(nil);FIndySrv.DefaultPort:=50000;FIndySrv.OnExecute:=DoOnIndyEx
我知道我希望从客户端获得多少字节(在此代码中为100)。如果客户端不给我100,我根本不需要这个数据包,因为它已损坏。我遇到客户端提供少于100个字节并断开连接的情况。在这种情况下,我正在捕获异常并且一切都会好起来的,除了在这个异常之后我的ServerTCPExecute被不连续地调用了很多次。没有任何其他客户端连接。为什么会这样?如果我执行TIdYarnOfThread(AContext.Yarn).Thread.Terminate;一切正常。但我不确定这是好的解决方案。procedureForm1.ServerTCPExecute(AContext:TIdContext);begi
我们有一个应用程序使用Delphi2007附带的Indy10.1.1组件监听传入的TCP请求。有时我们会收到不是来自客户端应用程序的传入连接。通常,会发生以下两种情况之一:1)在接收到任何数据之前客户端终止了连接,或者2)收到了我们不期望的数据并且我们手动终止了连接。但是,我们收到了没有收到任何数据的连接,并且似乎一直存在,直到客户端从其端终止连接。如果在指定的时间后没有收到数据,是否有办法终止与服务器的此类连接? 最佳答案 在您的OnExecute事件处理程序中,跟踪从客户端接收到最后一个良好数据的时间。使用连接的ReadTime
我需要使用TIdTCPServer组件实现一个TCP服务器连接。我已经使用GUI(拖放)及其工作完成了它。但我需要拆分表单和TCP实现。到目前为止我看到的示例代码总是使用TIdTCPServer作为TForm类的成员。(拖放的结果)。我如何调用从TForm实现的TCPConnection类TCPConnectionCConnection=newTCPConnection(Owner,this);以下是我尝试创建TCP服务器连接的方法。TCPConnection::TCPConnection(TComponent*Owner,TForm4*TSuperForm){IdTCPServer1
我是Indy的新手。这是我第一次在这里发布问题。我的项目必须以60Hz的频率向所有客户端发送数据。为此,我正在使用TIdTCPServer来监控保持事件状态。我的工具很旧,在WinXP上运行,使用C++Builder6和Indy8。有一个潜在的超时问题,有没有人想过如何处理它?这是我的代码:服务器端typedefstruct{AnsiStringPeerIP;//{CleintIPaddress}AnsiStringHostName;//{Hostname}intId;//{CleintID}}TClient;//ThisisMultimediatimercallbackfunctio
一个非常简单的问题,我似乎无法找到明确的答案。我有一个经典的TCPIndy服务器。我以block的形式发送数据。每个数据包以1个或多个block发送。当它到达时,每个数据包都会触发一次或多次OnExecute。在任何给定时间,不止一个客户端可以发送数据。我如何知道我在OnExecute中接收哪个客户端/数据包的数据?我知道这可能是一个微不足道的问题,但我想得到一个明确的答案。 最佳答案 如果你可以设计协议(protocol),它可以这样做:客户端以包含总大小和block大小的初始命令开始服务器OnExecute创建一个临时输出文件流