问题标签 [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 回答
782 浏览

objective-c - 如何使用 CFSocket 修复幼稚的服务器实现以允许多个连接

从 2010 年冬天开始,我一直在研究 iTunes U 上斯坦福 CS193p 课程(iOS 编程)第 17 讲课中的 bonjour/NSStream 示例代码。示例代码可在此处获得。

简而言之,示例代码创建一个套接字并绑定到端口 0,以便为它提供一个空闲端口。NSNetService然后它使用(bonjour)发布具有该端口的服务。应用NSNetServiceBrowser程序启动时也会启动。可用的服务放在一个UITableView. 当一个cell被选中时,对应的service就被解析,一个anNSOutputStream被创建,就可以发送数据了。

这是一个幼稚的实现,因为如果连接已经存在,连接将被拒绝。我的问题是,处理多个连接的正确方法是什么?一旦多个客户端连接到服务器,服务器如何区分它们?即如何将数据专门发送给一个客户而不是其他客户?

0 投票
1 回答
1030 浏览

macos - OS X - 启动守护进程和启动代理之间的通信

我是 OS X 新手,必须创建一个包含 2 个部分的应用程序 - 启动守护进程和启动代理。守护进程将执行命令执行、日志记录等工作,并且必须以某种方式将这些结果传达给启动代理(这会将它们传输到显示 GUI 的登录项,尽管这是未来的步骤)。

我的问题:我如何实现这种沟通?在阅读 Apple 文档后,到目前为止我所能收集到的信息是,我最好的选择是使用 CFSockets。有没有替代(更简单)的方式?有没有人有任何示例教程/示例/代码来展示如何使用 CFSockets(我找不到任何)?

PS:我的问题可能与问题重复,但该问题尚未得到解答,因此我想发布此问题。

0 投票
2 回答
929 浏览

ios - MonoTouch 和 CFStream API 的问题

我目前正在开发一个需要通过套接字连接与 MQTT 服务器通信的应用程序。由于 System.Net.Sockets API 在从 WiFi 网络切换到 3G 网络时往往会出现异常行为(实际上这种情况经常发生),我决定尝试使用 CFStream API。在这样做的过程中,我遇到了几个问题,如下所示。

CreatePairWithSocketToHost只要我在其中一个流上调用 Open(),创建一对流就会使应用程序崩溃。

无论我是否打电话,都会发生崩溃EnableEvents()。例外是:

CreatePairWithSocket通过首先创建和连接 a来创建一对流CFSocket允许Open()继续进行而不会崩溃,但CanAcceptBytesEvent永远不会被触发,CanAcceptBytes()始终是错误的,并且任何写入尝试都会因超时而失败。

使用创建一对流CreatePairWithPeerSocketSignature是唯一实际产生一对我可以使用的流:打开不会崩溃,我可以分别写入和读取。

API 在模拟器和实际设备上都以这种方式运行。那么,这是我做错了吗?是 MonoTouch 的问题吗?它是 CFStream API 本身的错误吗?

MonoTouch 版本:6.0.1。XCode 版本:4.5。

0 投票
0 回答
394 浏览

macos - CFSocket 数据回调

有谁知道 CFSocket API 如何从套接字读取字节到数据回调中?起初我认为它会做一些“幕后”工作,以始终以与发送数据相同的长度返回数据,但经过一些测试后,我发现如果我快速发送大量数据,数据会以块的形式返回,所以我需要使用标头自己解析数据包。

到目前为止,在测试中我还没有收到任何部分数据(即,如果我发送了 1000 个字节,我总是在数据回调中得到 1000 个字节,但绝不会更少)但我想如果缓冲区真的满了,这可能会发生,我将不得不重建数据包如果它们不完整。

我是否基本上需要对 CFSocket 使用与 BSD 套接字相同的数据包读取策略,即在每个数据包前面加上一个包含长度的标头,将流解析为数据包长度,如果数据包在回调时不完整,则重新组合数据再次被调用。

谢谢!

0 投票
1 回答
1448 浏览

iphone - IOS接收数据超时CFsocket

我想与 pool.ntp.org 连接以进行时间同步。所以我正在创建一个套接字

然后我正在设置一个循环

并连接到地址

如果我有回调 kCFSocketWriteCallBack 我发送所需的数据

直到这里的一切都很完美。我的实际问题是

9/10 次工作正常。服务器发送响应,我的过程继续。问题是我正在等待数据来实际继续我的应用程序逻辑。如果没有数据来kCFSocketDataCallBack不被触发并且应用程序永远等待。有没有办法让我在等待接收数据时设置超时?(无需自己NSTimer重新连接到池)

0 投票
1 回答
909 浏览

objective-c - SSL 和 NSStream

我尝试通过 CFSocket 连接在 NSStream 中使用 SSL。所以我写了这段代码:

但是,如果我从 curl 或浏览器向我的服务器发送请求,则会出现此错误:

当我在使用过的套接字上使用这个解决方案 NSStream SSL 时,我仍然有同样的错误。

如何配置流以使用 ssl?

0 投票
0 回答
99 浏览

macos - 我的服务器应用程序没有响应任何请求

我编写了一个响应 http 请求的简单服务器。服务器基于 CFSocket。当应用程序独立运行时,一切正常。

但现在我将其重写为 LaunchAgent 应用程序。我使用 XPC 与另一个进程通信。

进程之间的这种通信有效,但我的服务器没有响应此套接字上的连接。

LaunchAgent plist 如下所示:

我错过了什么?

0 投票
0 回答
295 浏览

objective-c - 使用 cfsocketsenddata 发送二进制数据

我尝试发送一个用于 LAN 唤醒的 UDP 包。包的第一部分需要是十六进制代码的 6*FF,后跟十六进制的 16 * mac 地址。如何以十六进制值发送 NSString?现在它将值 255 发送为 32 35 35 而不是 FF。

我有以下代码:

Todo:实现广播而不是发送到 IP 地址。

Wireshark 显示在尝试使用 mac 地址 aa:bb:cc:dd:ee:ff 时发送的以下包数据:

我需要的是以下内容:

我真的找不到如何在目标 C 中使用十六进制值。

0 投票
1 回答
1579 浏览

ios - iOS 开发:从 NSReadStream 获取私有 IP 和端口

我正在为 iOS 开发一个应用程序。在我的应用程序中,有一个到服务器的有效 TCP 连接,通过NSStreams. 现在我需要连接使用的端口,这会产生一些问题。

我可以通过设备的接口迭代来获取 IP,但是对于端口号,我必须从套接字获取信息。在下面的代码中,我尝试从我的工作中获取套接字并打开 NSInputStream _readstream。问题是,那CFSocketCopyAddress是零,我不明白为什么。别人可以吗?

很感谢任何形式的帮助!

0 投票
2 回答
9689 浏览

ios - 如何在 iOS7 的 UDP 套接字中发送字符串?

我试图在我的 iOS7 应用程序中通过 UDP 向已知 IP 发送一个简单的字符串,但找不到有关如何执行此操作的简单解释和示例代码。有很多关于 TCP 的内容,但关于 UDP 的内容不多,在我的情况下它必须是 UDP。