问题标签 [nsoutputstream]

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 投票
2 回答
5942 浏览

iphone - 将 NSString 放入 uint8_t 缓冲区

我正在使用套接字并尝试简单地将字符串写入套接字。我找到了一些关于如何执行此操作的示例,例如以下示例(oStream 是一个NSOutputStream)。这一切都在NSStreamEventHasSpaceAvailable.

这很好用。所以我尝试通过获取 NSString 的字节来修改它以使其可定制。

这根本行不通。它将完整的乱码写入缓冲区(可能是字节),并且我收到一条警告 getBytes 行“传递 getBytes 的参数 5 从指针中生成整数而不进行强制转换”。

抱歉,如果以前有人问过这个问题,但无法通过搜索找到答案,而且看起来问题应该很容易解决。谢谢!

编辑: 我发现了一些似乎可行的东西,但我不确定它是否是这样的正确编程。请看下面的答案。在这种情况下使用该危险代码吗?

0 投票
1 回答
762 浏览

iphone - 设备名称中的波浪号导致 NSOutputStream 套接字出现问题

在我们的应用程序的 iPhone 和桌面版本之间的网络中,iPhone 发送设备名称以在桌面上使用。问题是一些 Beta 测试人员的设备名称中有波浪号 (`)。由于某种原因,当它出现在设备名称中时,它会阻止套接字发送实际的字符串数据。

我尝试在发送之前简单地清理设备名称,但设备名称中的波浪号(在 iTunes 中输入)在运行时无法识别为波浪号。这是不起作用的代码:

它没有发现波浪号的出现,也没有替换任何内容。我也曾经rangeOfString搜索过波浪号,但它什么也没返回。我 100% 确定这个字符,至少在 iTunes 中输入时,是一个波浪号。

此外,当将字符串的描述打印到控制台时,字符被编码为\u00b4,而当将鼠标悬停在变量上时,它显示为句点.

有谁知道我怎样才能抓住这个角色并把它弄出来?此外,在目标 C 中是否有一种方法可以更轻松地清理字符串以确保通过套接字发送是安全的?

编辑:还有一些可能有用的东西,将 NSString 写入 NSOutputString 我使用以下代码行:

编辑#2:这行代码可以替换波浪号,但我确定还有其他我应该担心的字符:

0 投票
1 回答
3463 浏览

cocoa - Cocoa NSOutputStream 发送到连接

我是 Cocoa 的新手,但设法建立并运行了一个连接(到 FTP),并且我为 NSInputStream iStream 设置了一个事件处理程序来提醒每个响应(这也有效)。

我设法得到的只是问候消息和连接超时 60 秒,关闭控制连接。

编辑:我想我的问题是“不关闭->打开刷新输出流的非终止方式是什么?

在搜索了 stackoverflow 并发现了很多 NSOutputStream 写入问题(例如如何使用 NSOutputStream 的写入消息?)以及我的谷歌点击中的很多困惑之后,我想我会尝试问我自己的问题:

我已经尝试阅读关于 OutputStream 的 developer.apple.com 文档,但我似乎几乎不可能通过 NSOutputStream oStream 将一些数据(在本例中只是一个字符串)发送到“连接”。

以上似乎不会导致任何可用的事件。在 NSStreamEventHasSpaceAvailable 下键入它有时会给出响应,如果我通过不断创建新的连接实例向 ftp 发送垃圾邮件并在 oStream 有可用空间时继续发送一些命令。换句话说,没有什么“正确”的,所以我仍然不清楚如何正确地向连接发送命令。每次我想写入 oStream(以及 ftp)时,我是否应该打开 -> 写入 -> 关闭,然后我可以期待回复(iStream 上的 hasBytesAvailable 事件)吗?编辑:看起来不像。

出于某种原因,我发现很难找到任何关于这个问题的清晰教程。好像和我一样位置的不止几个:不清楚如何使用oStream write?

请!非常感谢任何可以帮助解决这个问题的一点点!

如果需要,我可以编写其余的代码。

  • 查克
0 投票
2 回答
1411 浏览

iphone - 将 64 位 int 值写入 NSOutputStream

我无法将位置坐标传送到我在网络上连接的一组电机。我可以很好地发送一个字符串,并从电机接收文本,但我似乎无法向它发送一个 int 值。

使用 NSlog 我已经确定我发送的实际值是正确的,但是我怀疑我通过输出流发送它的方法是错误的。有任何想法吗?

我发送 64 位 int 值的代码:

0 投票
1 回答
1205 浏览

iphone - iPhone 上的隧道网络请求

我想知道是否可以通过隧道传输 Web 请求,当然还有使用/实现什么。

我已经编写了NSInputStreamNSOutputStream的子类来通过我的自定义代理服务器发送和接收数据,这对于套接字连接非常有效。

我试图实现UIWebViewNSURLRequest的代表,但我无法捕获从UIWebView发出的所有 HTTP 请求。

先感谢您。

0 投票
1 回答
830 浏览

python - NSOutputStream 或扭曲的反应器合并 TCP 数据包数据

我正在为与 Python Twisted 后端接口的 iPhone 应用程序编写一些网络代码。我最近遇到了一个问题,看起来好像我的 NSOutputStream 在发送时将有效负载加倍,或者在接收时将有效负载加倍。

我正在使用 TCP 套接字的“Apple 推荐”样式,例如非轮询。

过程如下:
CLIENT
    - NSStreamEventHasSpaceAvailable:发送一个 X 字节数据包
    - NSStreamEventHasSpaceAvailable:发送另一个 Y 字节数据
SERVER
    - Twisted 接收大小为 (X + Y) 字节的数据包

如果 outputStream 的状态是“NSStreamStatusWriting”,我确保我明确不发送数据。如果没有抛出 NSStreamEventHasSpaceAvailable ,还要确保不允许从客户端发送数据。

关于什么可能导致有效载荷的这种双重/合并的任何想法?Twisted 代码相当简单,使用我的协议中的标准 dataReceived:

iOS 代码也相当标准:

当上述 iOS 代码连续调用两次(例如,一个接一个地发送两个数据包)时,扭曲的代码会报告合并后的数据大小。

提前感谢您的任何意见或建议。

0 投票
1 回答
2277 浏览

objective-c - NSOutputStream,NSStreamEventHasSpaceAvailable事件过去后如何正确输出数据?

我将要发送到服务器的消息添加到队列中:

当我收到事件 NSStreamEventHasSpaceAvailable 时,我发送队列中的第一条消息,然后将其删除,以便下一条消息准备好。如果队列为空,我会设置一个标志,以便我可以立即发送下一条消息而无需将其添加到队列中,因为流应该已准备好并且队列为空。

这是得到事件后的代码:

登录工作正常。登录完成后,程序开始在需要时使用队列发送消息。

这是将数据添加到队列末尾的代码:

问题是服务器无法识别通过队列发送的数据。数据在 printf 调用中正确打印。登录工作绝对正常。如果数据是在事件方法之外发送的,它似乎每次都失败,并且在某些时候失败,当它在事件方法中时,服务器会像收到损坏的数据一样行事。

这应该怎么做?

谢谢你。

0 投票
1 回答
431 浏览

iphone - istream和ostream的iphone功能

谁能告诉我以下代码中 istream 和 ostream 的功能以及我如何声明 istream 和 ostream,因为我从 net m 中挑选了代码,对代码了解不多

0 投票
3 回答
3369 浏览

iphone - 如何让 NSOutputStream 立即发送或刷新数据包

使用外部附件框架连接到蓝牙附件时,我遇到了延迟问题。发送数据时,我在控制台中得到以下自定义输出:

这会产生以下输出,其中立即包缓冲区是有效负载。

请注意它是如何连续写入“无空间”的,这意味着该方法hasSpaceAvailable返回 false 并强制缓冲数据,直到它返回 true。

1)我需要知道的是为什么会这样?它是在等待来自 BT 硬件的 Ack 吗?如果是这样,您如何消除此阻塞?

2)你如何做到这一点,以便它立即发送,我们基本上实时流式传输数据而不缓冲?

3) 是否有隐藏的 API 方法可以禁用此阻塞?

这是一个真正的问题,因为将数据发送到设备时不会有任何延迟/延迟,必须立即发送数据,以便硬件与 iPhone 命令同步。请帮忙。

0 投票
1 回答
335 浏览

objective-c - NSOutputStream 给 -1 个字节?

我得到:Wrote -1 bytes