问题标签 [cfsocket]

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 投票
1 回答
1082 浏览

ios - 将 CFSocket 上下文转换为指针

我将上下文设置为创建套接字的类的地址,如下所示:

然后在回调中我放了这个:

我看到了执行此操作的 Apple 示例代码,并在互联网上看到了执行此操作的示例。为什么我这样做时它不起作用。每当执行命中

我得到一个 EXC_BAD_ACCESS

0 投票
0 回答
255 浏览

ios - ios服务器端的CFSocket错误,回调函数没有被调用

我想在 iphone 上构建一个在线游戏,现在我需要编写代码来建立两个玩家之间的连接,而不是 bonjour,我必须使用一些套接字方式来做到这一点。这是我在客户端上的代码,它在 mac 上运行时有效,但不适用于 Iphone 设备测试。我真的不知道哪里出了问题,这让我很困扰。有人有同样的问题吗?日志说套接字已经在监听端口,但是AcceptCallback函数不会被调用,这是怎么回事?

CFSocketRef sserveripv4;

0 投票
0 回答
1419 浏览

ios - CFSocket 接受回调没有被调用。我错过了什么?

我目前正在用 Objective-C 编写一个简单的 TCP 服务器类,它应该能够绑定和侦听特定端口。我特别有一个-(void) start创建 CFSockets 的函数,将其绑定到指定的端口并将其添加到运行循环。它看起来像这样:

我还定义了SocketAcceptCallback这样的回调函数:

在回调中,我将连接桥接到一对 NSStreams,我将它们作为我的类中的成员字段并用于读取和写入。

现在的问题:我试图运行这个服务器并通过 telnet 连接到它。它连接了,但没有调用上述回调(我通过在其中添加诊断 NSLog 进行了检查)。我怀疑我没有正确地将套接字添加到运行循环,但我自己找不到任何错误。关于它可能是什么的任何想法?

0 投票
1 回答
914 浏览

ios - Debug Packet Loss In TCP Communication in iOS/iPad Application

I have an iOS application that remotely connects to 3 sockets(of some hardware). Each Socket has its own priority. One channel is only used for transferring messages between iPad App & hardware, one for Tx/Rx Images, another one for Tx/Rx Videos. I had implemented all the three sockets using GCDAsyncSocket API & things worked fine while using MSGSocket/ImageSocket (OR) MSGSocket/VideoSocket, but when I start using the VideoSocket/ImageSocket/MSGSocket simultaneously this is where things go a little haywire. I Lose Packets of Data.{Actually a chunk of file goes missing :-(} I went through the API & found some bug in the API: Unable to complete Read Stream which I assumed could be a cause of problem. Hence, I Switched to threads & implemented the same using NSThreads/CFSocket API.

I changed only the implementation for ImageSocket/VideoSocket code using NSThreads/CFSocket API & here is the implementation of the same dropbox-ed. I'm just unable to understand as to where the things are going wrong whether it is at iOS App end or at the Server side. In my understanding there shall be no loss of packets in TCP Communication.

Is there a way to Debug This issue. Also I request to go through the code & let me know if any thing is wrong(I know this can be too much that I'm asking for but I need some assurance as to the code implementation is correct). Any help to resolve this issue will be highly appreciated.

EDIT 1: After @JoeMcMahon Comment, I referred to this Technical Q&A & got a TCP Dump - trace.pcap file. I opened this tcp dump with Wireshark & it does show me the bytes transferred between the ports of hardware & iPad. Also in the terminal when I stopped the tcp dump capture I saw these messages:
12463 packets captured
36469 packets received by filter
0 packets dropped by kernel
Can someone point out the difference between packets captured & packets received by filter?
Note - The TCP dump attached is not for a failed scenario.
EDIT 1.1: Found the answer to difference between packets captured & packets received by filter here

0 投票
1 回答
624 浏览

ios - 在 CFSocketCallback 中无法访问 iOS 类属性

我有一个声明如下的 CFSocket 回调方法:

问题是我收到“使用未声明的标识符'_scanningInProgress'错误。我有点困惑,因为如果我尝试这样的事情:

然后一切正常。是什么导致了错误?这是该属性的 .h 文件声明:

0 投票
1 回答
567 浏览

tcpserver - 将套接字与 NSXPCConnection 一起使用

使用带有 NSXPCConnection 的套接字时遇到问题。

基本上,有一个主进程和一个辅助进程正在运行,通过 NSXPCConnection 建立。该辅助进程需要充当服务器并侦听特定端口(例如 111),该端口接收外部连接。

助手进程使用Apple 提供的TCPServer助手类(wrapper around )打开一个监听套接字。CFSocket代码在这里找到: https ://code.google.com/p/iphone-remotepad/source/browse/trunk/RemotePad/TCPServer.h?r=238

套接字在 中成功打开- (BOOL)start:(NSError **)error

外部客户端可以建立与 111 端口。(通过终端测试telnet localhost 111)。

但是,辅助进程永远不会收到 TCPServer 回调TCPServerAcceptCallBack

助手进程已com.apple.security.network.client启用权利。

此外,当我在主应用程序而不是辅助进程中运行 TCPServer 时,在端口 111 上设置服务器,并尝试连接到端口 111,我确实收到了回调。

关于帮助程序进程为什么没有收到套接字回调的任何想法?XPC 相关问题?

0 投票
2 回答
1317 浏览

ios - CFSocket 在连接成功时崩溃

这是我用于通信的客户端和服务器代码,CFSocket但在成功连接后,此代码会崩溃。

客户端.m

服务器.m

在上面的代码中,服务器CFSocketConnectToAddress在客户端中执行时会崩溃,之后客户端应用程序也会崩溃。

0 投票
0 回答
143 浏览

ios - CFSocketCreate 请求不通过 UDP

我使用下面的代码来创建套接字。

我已将 SOCK_DGRAM、IPPROTO_UDP 作为参数以通过 UDP 进行请求,但请求仍然通过 TCP 进行,仅使用 Wireshark 检查。

任何帮助将非常感激。

0 投票
0 回答
240 浏览

ios - iOS CFSocket 在空 UDP 数据包上崩溃

我正在使用为 UDP 配置的 CFSocket 通过 wifi 发送数据。问题是当我收到一个空的UDP数据包时,wifi突然停止工作。在那之后我不能再接收或发送任何东西了。有谁知道似乎是什么问题?这是我的配置和回调代码:

有时在 wifi“崩溃”发生后,我在使用 CFSocketSendData 时会收到“EXC_BAD_ACCESS”。

0 投票
1 回答
664 浏览

ios - 如何确保在应用程序退出并再次返回活动状态后服务器端 CFSocket 进行侦听?

我有一个大致遵循以下步骤的 iOS 应用程序:

  1. 打开一个监听套接字。
  2. 接受单个客户端连接。
  3. 执行与客户端的数据交换。
  4. 当它接收到“resign active”事件时,它会关闭并释放与客户端和服务器套接字关联的所有资源(即,使所有运行循环源、读/写流和套接字本身无效并释放)。
  5. 恢复活动后,它会恢复侦听套接字以继续通信(在 iOS 应用程序在步骤 #4 中退出活动后,客户端将继续尝试重新连接,直到能够重新连接)。

每当客户端和服务器之间确实发生连接时,我在第 5 步之后看到的是应用程序恢复但无法重新打开服务器套接字进行侦听。换句话说,即使在第 5 步中释放了所有内容,应用程序也无法重新绑定和侦听套接字地址。更糟糕的是,在尝试重新设置侦听套接字时,CFSocket API 调用中没有检测到错误。

另一方面,如果 iOS 应用程序退出活动并再次恢复,而之前没有接收到任何连接,则客户端可以只连接一次,直到应用程序退出并再次恢复,在这种情况下,可以观察到上述相同的行为.

可以在以下存储库中找到说明此问题的示例最小应用程序:

https://github.com/dpereira/cfsocket_reopen_bug

最相关的来源是:

成熟的应用程序位于:https ://github.com/dpereira/conflux

套接字(和相关资源)的设置/拆卸是否有问题?