问题标签 [tclientsocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4312 浏览

delphi - Delphi TClientSocket(仍然)被弃用了吗?

在错误报告12266(“套接字连接错误导致资源泄漏”)的解决意见中,Robert Ehteshamzadeh 写道

TClientSocket 已弃用。此报告保持打开状态,以便提供建议的解决方法。

这是针对Delphi 6的。在以后的版本中,工具面板中默认没有安装TClientSocket和TServerSocket,但是提供了安装说明。

从那时起,这种状态是否发生了变化,以至于 TClientSocket(和 TServerSocket 也是)现在再次成为 Delphi VCL 中的一等成员?我想在某些项目中使用 TClientSocket(作为 Indy 和 Synapse 之后的另一个 TCP/IP 库),但在 Embarcadero DocWiki中找不到官方状态信息。

(“弃用”类/方法的官方索引会很有用)。

0 投票
1 回答
169 浏览

delphi - 工作站之间的套接字问题

最近,我遇到了不同工作站之间的套接字问题。我正在使用 Delphi TClientSocket 连接服务器并从中接收数据。根据我的测试,我发现 TClientSocket 在不同的工作站中接收到的数据不稳定。

服务器位于 Windows XP (SP2) 中,并以 10000kbps 的速度持续广播 msg。还有另外两个运行相同客户端应用程序的 Windows XP (SP2) 从服务器接收数据。但结果如此不同,一个客户端一直以 10000kbps 的速度接收数据,而另一个客户端仅以 300kbps 的速度接收数据。

这两个测试 Windows XP (SP2) 工作站的客户端应用程序是否有可能会导致此结果?诸如注册表值之类的东西,还是其他?

请帮忙,谢谢。

0 投票
2 回答
3265 浏览

c++ - Why are TClientSocket and TServerSocket deprecated and what should I use instead?

I'm just starting to get familiar with Embarcadero RAD Studio 2010 after living a life of Eclipse, Emacs, Visual Studio and notepad :)

I'm jumping into quite a large C++ application (500.000 - 1.000.000 lines) that I found made extensive use of TClientSocket and TServerSocket. The IDE first complanied about that TClientSocket was not found but could still compile and I scratched my head. Then I found out that it's not installed by default anymore and is marked as deprecated since way back.

I have tried to read about the subject but haven't found much information. My questions are

  • Why are TClientSocket and TServerSocket deprecated?
  • How do they differ in the way they function from WinSock and BSD sockets?
  • What would be best to use instead and is there a quick replacement that would not involve going through the entire application and changing everywhere TClientSocket and TServerSocket are being used? I would guess that it would mostly be the inner workings that have changed or?
0 投票
1 回答
720 浏览

php - PHP 客户端与 Apache Thrift API 通信

我是一名 PHP 开发人员,在一个将使用 Apache Thrift API 与另一台服务器通信的站点上工作,所以我想知道是否有一些现有的类或某种方式可以用来与 PHP 中的 Thrift API 进行通信。我看到了用 Python 编写的使用 Tsocket 的示例,但我不知道 PHP 是否有 Tsocket 类。因此,如果有人做过这样的工作,那么请发布一些示例或讲述一些我可以用来在 PHP 中实现 thrift API 客户端的类。

提前感谢大家的努力。

0 投票
3 回答
4320 浏览

delphi - Delphi — TClientSocket ReceiveText MaxLen?

I've been trying to set the length of the amount of characters you recover from the ReceiveText TClientSocket function and nothing seems to be working. E.g., Receiving the first leftmost character(s) from the recovered data or otherwise data stream. Is there a way to accomplish this in Delphi using this specific object?

Help would be much appreciated. Thanks in advance.

0 投票
2 回答
4124 浏览

delphi - Delphi套接字错误

试图了解如何使用ServerSocketClientSocket在 Delphi 中。我做了一个简单的聊天程序,但是在客户端发送第一条消息后出现此错误(它发生在发送过程中 - 就在服务器收到消息之后)

继承人服务器代码

这是客户端代码

.

0 投票
1 回答
803 浏览

c++ - 在非阻塞模式下的 TThread 中使用 TClientSocket 时,OnConnect 事件未触发

我正在尝试TClientSocket在多线程 C++ Windows 应用程序中以非阻塞模式使用 Borlands 组件。我正在创建多个线程(派生自 的类TThread),每个线程都创建自己的TClientSocket对象。然后我分配线程类的成员函数作为套接字的OnConnect,OnDisconnect和事件的事件处理程序。OnSocketError我在这里遇到的问题是,每当我TClientSocket::Open()从函数内部调用TThread::Execute()函数时,OnConnect事件都不会触发。但是,当我在调用Open()函数之前从 VCL 线程调用函数时TThread::Execute(),所有事件都会触发,我可以根据需要使用线程-套接字组合。现在我还没有在文档中读到任何内容TClientSocket在线程内使用时不应在非阻塞模式下使用,但在我看来,我尝试使用此类的方式在概念上可能存在问题。Borland 文档在这个主题上相当糟糕,这些组件现在已被弃用,因此很难获得可靠的信息。尽管已被弃用,但我必须使用它们,因为我拥有的 Builder 6 包中没有其他选择。任何人都可以告诉我是否有正确/错误的使用方式TThread和非阻塞TClientSocket组合。我从来没有在使用它作为 VCL 线程的一部分时遇到过问题,也从来没有遇到过使用 TServerSocket 的问题,我真的不明白为什么有些事件没有触发。

0 投票
1 回答
558 浏览

c++ - 使用多个 TClientSocket 实例导致 Windows 句柄泄漏的 C++ 应用程序

TClientSocket我在使用 Borland/Embarcadero组件时遇到了明显的手柄泄漏。我有一个创建多个TThread实例的应用程序,每个实例TClientSocket动态创建一个对象,连接到它的目标发送一些消息,然后被删除。然后TThread删除实例(使用FreeOnTerminate = true)设置。我知道这效率低下,但它完美地满足了应用程序的需求——TThread能够同时存在的最大实例数限制为 32。我看到的问题是我可以看到一个明显的 windows 句柄泄漏问题通过任务管理器。为了隔离问题,我在单线程意义上应用了相同的问题,只是动态创建了一个TClientSocket对象并在主 VCL 线程中的单个循环内完成后再次删除它。这表现出相同的手柄泄漏问题。我知道该组件已被弃用,并且我知道我正在做的事情效率低下,但我不明白为什么会有句柄泄漏。在删除对象之前是否需要对对象执行任何操作TClientSocket以消除此句柄泄漏,或者这是组件中的错误?我在非阻塞模式下使用套接字并将事件处理程序分配给OnConnect OnDisconnectOnSocketError

0 投票
1 回答
927 浏览

c++ - 在阻塞模式下使用 TServerSocket 时如何处理异常?

我正在使用 Embarcadero RAD 工作室和TServerSocket阻塞模式的组件编写 C++ 应用程序。我已经重写了OnGetThread套接字的处理程序以创建一个自定义类,从该类派生TServerClientThread重写默认ClientExecute()方法。在这个函数中,我使用 aTWinSocketStream并调用WaitForData()Read()Write()来接收和发送数据。根据我读过的所有内容,这是一种可以接受的处理方式(尽管如果这是错误的,请纠正我)。

从这个答案阻塞套接字会触发哪些事件?我相信OnClientError在阻塞模式下使用处理程序是可以的,因为事件会触发。在我的事件处理程序中,我每次都将错误代码设置为零,以便不会引发异常。

此外,每次我调用Read()Write()从我的ClientExecute()函数中调用时,我都会将它包装在一个 try-catch 块中并捕获ESocketError异常。

我的问题是:这是最好的方法:

  1. 使用套接字错误事件处理程序来处理所有事情(这很好,因为我可以显示套接字错误代码以用于调试目的)
  2. 使用 try-catch 语句来防止我的应用程序抛出异常
  3. 两者都使用(尽管不要在处理程序中将错误代码设置为零,否则不会抛出异常,使 2. 上面毫无意义)

这是一个旧组件,已被弃用,但我必须使用它,但由于我无法找到正确使用它的铸铁指南,我从许多来源拼凑出一种方法。它已经运行了相当长的一段时间,但我时不时地收到一个静默错误,阻止服务器接受任何进一步的客户端连接 - 但我没有得到任何输出,OnClientError也没有ESocketErrors抛出。此应用程序在嵌入式设备上运行,因此检测到它的唯一方法是在它变得无响应时。

如果有人可以就上述 3 种方法中的哪一种最好(或提出替代方案)给我建议,我将不胜感激。

0 投票
1 回答
1223 浏览

android - 将图像从服务器发送到客户端以及从客户端发送到服务器

客户端将文件发送到服务器,服务器接收并保存它。但是,当在客户端中出现 Line(while ((len = outputFromServer.read(buf)) != -1)) 时,客户端卡住了,我不知道为什么?尝试 {

服务器端

客户端将文件发送到服务器,服务器接收并保存它。但是,当在客户端中出现 Line(while ((len = outputFromServer.read(buf)) != -1)) 时,客户端卡住了,我不知道为什么?