ios - iOS 的 FIONBIO 值是多少,以阻止/取消阻止套接字?

标签 ios delphi websocket cross-platform indy

我一直在使用基于 Indy TIdHTTP 组件的跨平台 Websocket 客户端,发现 here .

客户端,TIdHTTPWebSocketClient,内部使用TIdWebSocketMultiReadThread;后者通过使用 Indy 的 GStack IOControl 访问 ioctl 创建一个非阻塞套接字(InitSpecialEventSocket 方法)。

从github下载的代码,适用于Windows,但在Android上失败; FIONBIO不得不改为$5421 .

我目前无法在 iOS 上进行测试,我想知道其他人是否已经设法让 TIdHTTPWebSocketClient 在此平台上工作,以及应该使用 FIONBIO 的什么值。

提前致谢。

最佳答案

FIONBIO适用于 ioctlsocket()在 Windows 和 ioctl()在 POSIX 上。

在 POSIX 上,您可以选择指定 SOCK_NONBLOCK创建套接字时标记,或设置 O_NONBLOCK使用 fcntl(F_SETFL) 在套接字上标记.

请注意 Indy 确实有一个 AOverlapped TIdStack.NewSocketHandle() 上的(非阻塞)参数和 TIdStackBSDBase.WSSocket()方法,以及 TIdStackBSDBase.SetBlocking()方法,但它们目前尚未针对非 Windows 平台实现(已为它们编写代码,但尚未 checkin )。

关于ios - iOS 的 FIONBIO 值是多少,以阻止/取消阻止套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599892/

相关文章:

delphi - 如何使Delphi调试器在虚拟化Delphi 2009中正常工作

javax websocket客户端ssl连接

multithreading - 在与托管 bean 分开运行的线程中访问 OmniFaces PushContext 实例

ios - 使用 NSPredicate 用另一个 NSArray 过滤一个 NSArray

ios - 条件不工作

delphi - 如何在资源脚本的数据部分中使用宏?

delphi - Delphi 7中如何去定义方法或过程?

ios - 更改 UIPrintInteractionController 导航栏标题

ios - prepareForSegue 发送 Pdfs 错误 - 无法转换

node.js 监听 UDP 并转发到连接的 http web 客户端