我最近开始玩Indy10(来自DelphiXE3)和TCP连接。在您的帮助下(特别感谢RemyLebeau),我已经可以构建一个简单的服务器应用程序来管理客户端连接(参见此处Delphi-SimpleTCPclient/serverusingIndytocheckclientsstatus)。我正在使用列表框来添加连接的客户端。看代码:procedureTfrmMain.TCPServerConnect(AContext:TIdContext);varHost:String;beginHost:=UpperCase(GStack.HostByAddress(AContext.Bindi
我在DelphiXE2中使用TIdSSLIOHandlerSocketOpenSSLIndy组件通过TCP将数据发送到SSL服务器(Apple推送通知服务)。我已经在一定程度上发挥了作用,但不确定我是否以最好的方式进行。我正在做以下事情:设置SSL属性公司。证书路径调用.Open方法打开连接检查OnStatusInfoEx事件中的AType参数,直到我收到“握手完成”消息使用.WriteDirect发送数据用.Close关闭连接有没有更好的方法知道连接何时准备好发送数据?有人有直接通过TCP使用TIdSSLIOHandlerSocketOpenSSL组件的示例代码吗?我发现的示例主要用
我有一个在本地机器(127.0.0.1)上运行的exe。此exe在端口1234写入并在5678读取。exe每50秒写入一个整数值,例如1212、4545、6767等。我想读取该整数值并显示。所以我正在使用IndyClient来达到目的。我为此开发了以下代码片段。IdTCPClient1.Port:=1234;//SetporttoconnecttoIdTCPClient1.Host:='127.0.0.1';//SethosttoconnecttoIdTCPClient1.Connect;//MakeconnectionsMsg:=IdTCPClient1.Socket.ReadLn;
我尝试在客户端发送长度小于255的数据。我尝试使用此协议(protocol)发送数据:Lenghth+StringByte+stringsample:string=ABCDsentdata=4ABCD这是我的服务器端代码:procedureTfrmServer.tcpsrvr1Accept(Sender:TObject;ClientSocket:TCustomIpClient);vara:arrayofbyte;I:Cardinal;mystr:string;b,Len:Byte;beginClientSocket.ReceiveBuf(b,1,0);//firsttry:getlen
我知道我希望从客户端获得多少字节(在此代码中为100)。如果客户端不给我100,我根本不需要这个数据包,因为它已损坏。我遇到客户端提供少于100个字节并断开连接的情况。在这种情况下,我正在捕获异常并且一切都会好起来的,除了在这个异常之后我的ServerTCPExecute被不连续地调用了很多次。没有任何其他客户端连接。为什么会这样?如果我执行TIdYarnOfThread(AContext.Yarn).Thread.Terminate;一切正常。但我不确定这是好的解决方案。procedureForm1.ServerTCPExecute(AContext:TIdContext);begi
我有一个使用TIdTCPClient从给定网站发送和接收数据的应用程序-如下所示:TCPClient.Host:=myHost;TCPClient.Port:=myPort;TCPClient.Connect;TCPClient.IOHandler.Write(clientRequest);TCPClient.IOHandler.ReadStream(clientResponse,size,False);clientRequest是动态创建的,clientResponse是服务器(所需网站)发送的响应。所以我的问题是如何计算平均响应时间从我的TCPClient连接到的网站?
我想实现一个演示应用程序来通过TCP/IP监听数据。DataTransmitter会一直传输一系列或ASCII字符或一系列字符串。它将数据馈送到TCP/IP地址(例如127.0.0.1:22),这可能是一个GPS发射器。我想实现一个演示应用程序,用于通过单击开始按钮接收数据并通过TCP/IP监听数据并相应地显示它。如果我错了请纠正我,我认为我不能为此目的使用服务器/客户端服务器。我尝试用TIdTcpClient创建一个客户端应用程序,它只接收一次数据。我认为Indy没有TCP监听组件。提前致谢。 最佳答案 如果你想监控一些设备和你计
一切正常,但有时在几个小时后连接可能会丢失。我应该如何检测聊天不再有效?我应该使用PING/PONG事件来检测吗?这种情况很少见,但仍有可能发生。感谢您的建议。 最佳答案 是的,应该使用IRCPING和PONG命令来提高连接稳定性。服务器和客户端可以发送“空”(无操作,心跳)消息来保持连接。如果一方不再收到这些消息,则可以认为连接丢失。如果服务器检测到没有响应的客户端,则服务器可以简单地关闭连接。客户端可以显示一条错误消息并建议用户重新连接或自动重新连接。单独添加无操作(心跳)消息将有助于保持连接稳定,因为一些网络组件可能会在长时间
我有两个应用程序在同一台机器上运行,一个充当TCP服务器,另一个充当TCP客户端。在那台机器上,我有2个网络接口(interface),所以必须告诉应该使用哪个TCP连接。为此,我一直在使用Bind方法,因为我知道一个是192.168.1.x,另一个是10.1.135.x,但我的疑问是:当我设置机器IP本身时,例如192.168.1.195这不起作用,但是如果我设置网关IP192.168.1.1就可以了。不起作用的代码是tmpTcp:=TTCPBlockSocket.Create;tmpTcp.Bind('192.168.1.195','50000');tmpTcp.Connect('
我们有一个应用程序使用Delphi2007附带的Indy10.1.1组件监听传入的TCP请求。有时我们会收到不是来自客户端应用程序的传入连接。通常,会发生以下两种情况之一:1)在接收到任何数据之前客户端终止了连接,或者2)收到了我们不期望的数据并且我们手动终止了连接。但是,我们收到了没有收到任何数据的连接,并且似乎一直存在,直到客户端从其端终止连接。如果在指定的时间后没有收到数据,是否有办法终止与服务器的此类连接? 最佳答案 在您的OnExecute事件处理程序中,跟踪从客户端接收到最后一个良好数据的时间。使用连接的ReadTime