问题标签 [gcdasyncsocket]

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 回答
663 浏览

ios - GCDAsyncSocket 在传输数据时更改数据

我正在制作多人 iOS 游戏并遇到以下问题:我发送了一个字典,其中包含一组自定义对象。这些自定义对象符合NSCoding. 我将字典转换成NSData这样:

然后发送

收到

并尝试取消归档

一切看起来都非常简单,但应用程序在取消归档数据时崩溃,我收到以下错误

[NSKeyedUnarchiver initForReadingWithData:]:无法理解的存档(0x62、0x70、0x6c、0x69、0x73、0x74、0x30、0x30)'

我查看了发送和接收数据的描述,发现数据到达接收设备 1) 更改和 2) 截断。

当我通过 GameKit 协议、Game Center 和蓝牙发送完全相同的数据时,就没有这样的问题——我收到的数据没有改变,所以很明显问题出在 GCDAsyncSocket 深处的某个地方。

有没有人遇到过这样的麻烦?谢谢

0 投票
1 回答
5526 浏览

objective-c - 使用GCDASyncSocket时如何分隔数据包

谁能帮我?我使用 GCDAsyncSocket 通过 TCP 协议在两个设备之间集中交换数据。我发送这样的数据:

我读到这样的数据:

我的问题是这些数据包被弄乱了。假设一个标有标签 10 的数据包在接收器设备上被读取为标有标签 11 的数据包,该数据包是在数据包 10 之后立即发送的,并且在取消归档实际数据包 11 时NSKeyedUnarchiver会抛出异常Incomprehensible archive

据我了解,我应该以某种方式分离数据包。我尝试将分隔符号附加到正在发送的数据中:

并尝试像这样阅读它:

但这没有帮助。我做错了什么,我应该怎么做?

0 投票
1 回答
1144 浏览

ios - 在 iOS 5.1 上尝试使用 GCDAsyncSocket 写入数据时出错

我正在尝试在我的 iOS 应用程序中使用 GCDAsyncSocket。我一直在遵循 CocoaAsyncSocket 的 wiki 中提供的所有步骤。这是我正在做的事情:

我已经包含了框架依赖项:Security 和 CFNetwork,并在我的课程中包含了各自的委托。我需要任何其他配置才能使用它吗?

当我运行这个例子时,我得到这个错误:

[ NSMallocBlock字节]:无法识别的选择器发送到实例 0x6b7abe0 'NSInvalidArgumentException',原因:'-[ NSMallocBlock字节]:无法识别的选择器发送到实例 0x6b7abe0'

它发生在 GCDAsyncSocket.m 的这一行

0 投票
1 回答
2221 浏览

objective-c - 如何在 GCDAsyncsocket 中设置 tcp_nodelay?

似乎标题是自我描述的。我想提高在我的应用程序中发送和接收数据的速度,我被告知将 tcp_nodelay 设置为 true。但我不知道如何使用 GCDAsyncSocket 做到这一点。谁能帮我?

0 投票
1 回答
2263 浏览

ios - iOS 的 GCDAsyncSocket 没有写出缓冲区

基本上我写了一个 NSData 对象:

运行时调用委托

但是由于某种原因,当写入进入缓冲区时......它没有写入服务器。

当我停止构建时,我猜套接字决定写入所有内容,而服务器最终会看到它。

我将如何解决这个问题?没有办法刷新 CocoaAsyncSocket,因为它没有必要......我尝试添加行尾,如“/n”等等,但这也没有任何作用。

0 投票
1 回答
1638 浏览

ios - 按时从 GCDAsyncSocket 读取响应(iOS)

这个问题很简单,我只是不知道如何处理它。

我通过以下方式读取数据:

现在,正如预期的那样,我的委托方法被调用并正确读取 JSON 数据:

问题是,由于 GCDAsyncSocket 是异步的,这段代码

在数据有机会被读取之前调用。我将如何确保读取数据,然后对其进行分析。

0 投票
1 回答
462 浏览

ios - 读取复杂的套接字响应

我有一个代码设计问题,我想不出最有效的方式来处理这个问题:

基本上,我想发送一个 JSON 请求并一次性从服务器读取响应。

我有一个方法,例如:

我会解释什么

确实,基本上向服务器发送一个 JSON 字符串并获得它是否失败的响应。

我知道如何将它写入服务器并阅读它。问题在于一起执行此操作,因此我可以将该 BOOL 值返回为真或假,以查看它是否有效。

现在,在写入套接字后,我得到了响应,并且必须通过委托方法读取它:

一旦服务器给出响应,就会调用它。问题是,所有这些对套接字的读/写都是异步发生的。

既然发生了这种情况,我就没有办法做到这一点:

}

由于之后调用的代码

在读取数据之前执行(因为它都是异步的)。

我意识到我必须在那个委托方法中做点什么。这很好,但是我收到了不同类型的响应,并且每个响应都必须以不同的方式处理。

我的想法是:标记每个写入命令,然后使用一些

在 didReadData 委托方法中。

但是如何正确返回这些数据呢?有时我需要返回一个 BOOL,有时我需要返回一个 NSDictionary、NSString 等...

我希望能够让上面提到的每个请求方法返回它们的关联数据,但我不能(至少效率不高)。我必须为每个请求制作两种不同的方法吗?

IE

我有点困惑如何处理这个问题。

如果我不清楚,我很抱歉,

我很感激我能得到的任何帮助。

0 投票
1 回答
1543 浏览

objective-c - didConnectToHost 没有被调用

我已经使用GCDAsyncSocket和导入 了一个名为“NetClass”的类的客户端CGDAsyncSocket.h。比我LoginViewController调用我的网络类函数来连接到服务器。

在服务器端,我看到客户端已连接,但在客户端didConnectToHost没有被调用。

我的NetClass电话LoginViewController

我的NetClass功能:

但同时函数 socketDidDisconnect 被调用

NSLog 输出:

我看到当像这样更改 ReceiveData 时 asyncSocket 没有连接:

如果我在我的 LoginViewController 中创建套接字,didConnectToHost 方法正在完美调用/出了什么问题&为什么我不能在我的 NetClass 中使用这个方法?

0 投票
1 回答
2255 浏览

xcode - 如何使 AppDelegate 中声明的 GCDAsyncSocket 可用于查看控制器

在发布类似问题(不起作用)之后,我在 AppDelegate.h 上声明了一个 GCDAsyncSocket 实例

并在 AppDelegate.m 中进行套接字初始化

我试图通过调用从多个视图控制器访问套接字:

代码完成在 [[UIApplication sharedApplication] delegate] 处停止,无法建议 asyncSocket。当在 AppDelegate 中声明 asyncSocket 的实例时,我应该怎么做才能在多个视图控制器中访问 asyncSocket?谢谢!

这是我的 Xcode 项目文件:http ://bit.ly/PLe1Le

0 投票
1 回答
170 浏览

objective-c - 如何将数据解析为数组或字典

我有一个应用程序可以同时与不同的服务器建立多个连接。我想将每个连接记录在一个数组中,以便可以在表格视图中显示它们并在我的应用程序的不同部分中使用它们。这就是我从 GCDAsyncSocket 得到的。

试图弄清楚如何根据地址将其解析为可变数组或字典,以便我可以在表格视图中显示它。这来自 GCDAsyncSocket