问题标签 [cocoaasyncsocket]

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

iphone - 调用 onSocket:didReadData:withTag 时 CocoaAsyncSockets 似乎失败了

出于某种原因,当我尝试调用 CocoaAsyncSocket 的 onSocket:didReadData:withTag 方法时,它失败并且不显示读取的数据。

应用委托:

这是我在 CocoaAsyncSocket 库中的方法:

当我在模拟器中运行我的应用程序时,这是我的输出日志吐出的内容:

  • onSocket:didConnectToHost:port 被调用,NSLog 吐出“已连接”。
  • onSocket:didReadData:withTag 被调用,NSLog 吐出“RX length: 8”。
  • 同样在 onSocket:didReadData:withTag 中,NSLog 吐出“失败”。

如果我错了,请纠正我,但它不应该“msg”包含从服务器读取的数据的值?看起来数据读取知道它期望数据长度为 8,但数据似乎没有存储到字符串中。我对 iOS 非常陌生,尤其是套接字编程,所以这对我来说是全新的。对此主题的任何帮助将不胜感激。

谢谢!

0 投票
2 回答
445 浏览

iphone - 调用 CocoaAsyncMethod scheduleDequeueRead 时应用程序冻结

我正在使用 CocoaAsyncSocket 库来创建 TCP 套接字连接。我遇到的问题是在调用了几个库方法之后,我得到了一个错误。

应用委托:

这是我在 CocoaAsyncSocket 库中的方法:

当我在模拟器中运行我的应用程序时,这是我的输出日志吐出的内容:

之后,我在此方法中的 AsyncSocket.m 文件(库的一部分)中出现错误:

具体来说,错误在线:

例外是: 线程1:BAD_EXC_ACCESS(代码1=0,地址=0xd0688b8a)

之后,应用程序在模拟器中完全冻结。如果有人能就这导致应用程序冻结的原因提供一些见解,我将不胜感激。

这是我正在使用的库: CocoaAsyncSocket

编辑:

启用 Zombie Objects 并在模拟器中运行应用程序后,输出中会显示以下内容:

我将不得不对此进行一些挖掘并弄清楚发生了什么。

编辑2:

在使用仪器进行了一些挖掘之后,我发现了以下内容:

编辑 3:

现在错误显示:

线程 1:EXC_BREAKPOINT(代码=EXC_I386_BPT,子代码=0x0)

这是仪器的屏幕截图。不过,我并没有真正关注如何解释这一点。看起来我正在向已释放的对象发送消息。这是真的?如果是这样,我该如何弄清楚这发生在哪里?

如果图像很难看,这里有一个直接链接: 仪器截图

仪器截图

0 投票
1 回答
361 浏览

c# - cocoaasynsocket 到 c 夏普服务器

我想通过套接字在 iPhone 和 C# 服务器之间进行通信,当我尝试使用 cocoaasynsockets 通过 LAN 创建从 iPhone 到我的 C Sharp 服务器的套接字时,但它没有在我的服务器上创建任何套接字。我尝试提供不同的 IP,例如在 (whatispmyip.com) 上找到的 127.0.0.1/192.168.2.102(local)/IP,但没有任何收获,

这是我的 iPhone 测试代码

这是我的cSharp服务器代码

我在其中缺少什么,我应该提供什么 IP,或者在服务器端或 iphone(客户端)上有一些设置来接受/创建来自网络的套接字

0 投票
2 回答
4136 浏览

iphone - 哪个更适合用于 XMPP 框架或 CocoaAsyncSocket 用于 iOS 应用程序的实时通信?

我想在我的应用程序中实现实时通信(如聊天)。我很困惑应该使用 XMPP 框架还是 CocoaAsyncSocket ?

由于这里提到了 CocoaAsyncSocket 的工作原理https://github.com/robbiehanson/CocoaAsyncSocket/blob/master/README.markdown以同样的方式 XMPP 如何工作?请解释。

提前致谢。

0 投票
0 回答
391 浏览

cocoa-touch - GCDAsyncUdpSocket 丢弃数据包并创建大量 DISPATCH_WORKER_THREADs

我正在构建一个多播客户端,GCDAsyncUdpSocket并且面临很多数据包丢失。

我已经使用 Wireshark 监控了服务器,并使用 AirCap 捕获了空中的 WiFi 数据包,我确信数据包传输正确。我还查看了库中的调试跟踪GCDAsyncUdpSocket,我发现有时socket4FDBytesAvailable:会用一个大参数调用它,比如 4000,但是当它读取套接字时,它读取的字节更少——可能是 500——这就是数据包丢失的地方。我增加了套接字缓冲区,但这无济于事。

最后,我注意到使用 Instruments 的时间分析器,无论巧合与否,每次我丢失数据包时都会创建一个新的 DISPATCH_WORKER_THREAD 实例。这是正常的吗?

0 投票
1 回答
1406 浏览

iphone - GCDasyncUdpSocket 和 wifi 接口

en0 似乎是 Apple iOS 设备的 wifi 接口,但在我的代码中,当我指定接口 en0 时,小型多播客户端我没有收到任何东西。有什么可能出错的线索吗?GDCasyncUdpSocket 日志不显示任何错误 => 将套接字绑定到端口(1234)接口((en0))

问候

0 投票
2 回答
1907 浏览

ios - 在编程流时遇到问题

所以这就是问题所在:流没有在正确的时间写入,并且无法从我的服务器获得响应。我知道我正在编写正确的数据,因为当我停止构建时,它会写入服务器并且服务器很高兴。我很困惑为什么这没有在正确的时间发生。

我正在使用 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

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

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

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