问题标签 [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.
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 非常陌生,尤其是套接字编程,所以这对我来说是全新的。对此主题的任何帮助将不胜感激。
谢谢!
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)
这是仪器的屏幕截图。不过,我并没有真正关注如何解释这一点。看起来我正在向已释放的对象发送消息。这是真的?如果是这样,我该如何弄清楚这发生在哪里?
如果图像很难看,这里有一个直接链接: 仪器截图
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(客户端)上有一些设置来接受/创建来自网络的套接字
iphone - 哪个更适合用于 XMPP 框架或 CocoaAsyncSocket 用于 iOS 应用程序的实时通信?
我想在我的应用程序中实现实时通信(如聊天)。我很困惑应该使用 XMPP 框架还是 CocoaAsyncSocket ?
由于这里提到了 CocoaAsyncSocket 的工作原理https://github.com/robbiehanson/CocoaAsyncSocket/blob/master/README.markdown以同样的方式 XMPP 如何工作?请解释。
提前致谢。
cocoa-touch - GCDAsyncUdpSocket 丢弃数据包并创建大量 DISPATCH_WORKER_THREADs
我正在构建一个多播客户端,GCDAsyncUdpSocket
并且面临很多数据包丢失。
我已经使用 Wireshark 监控了服务器,并使用 AirCap 捕获了空中的 WiFi 数据包,我确信数据包传输正确。我还查看了库中的调试跟踪GCDAsyncUdpSocket
,我发现有时socket4FDBytesAvailable:
会用一个大参数调用它,比如 4000,但是当它读取套接字时,它读取的字节更少——可能是 500——这就是数据包丢失的地方。我增加了套接字缓冲区,但这无济于事。
最后,我注意到使用 Instruments 的时间分析器,无论巧合与否,每次我丢失数据包时都会创建一个新的 DISPATCH_WORKER_THREAD 实例。这是正常的吗?
iphone - GCDasyncUdpSocket 和 wifi 接口
en0 似乎是 Apple iOS 设备的 wifi 接口,但在我的代码中,当我指定接口 en0 时,小型多播客户端我没有收到任何东西。有什么可能出错的线索吗?GDCasyncUdpSocket 日志不显示任何错误 => 将套接字绑定到端口(1234)接口((en0))
问候
ios - 在编程流时遇到问题
所以这就是问题所在:流没有在正确的时间写入,并且无法从我的服务器获得响应。我知道我正在编写正确的数据,因为当我停止构建时,它会写入服务器并且服务器很高兴。我很困惑为什么这没有在正确的时间发生。
我正在使用 GCDAsyncSocket 读取/写入套接字
我创建了一个单独的类来处理所有网络,这是我的代码:
这是控制台所说的:
ios - iOS 的 GCDAsyncSocket 没有写出缓冲区
基本上我写了一个 NSData 对象:
运行时调用委托
但是由于某种原因,当写入进入缓冲区时......它没有写入服务器。
当我停止构建时,我猜套接字决定写入所有内容,而服务器最终会看到它。
我将如何解决这个问题?没有办法刷新 CocoaAsyncSocket,因为它没有必要......我尝试添加行尾,如“/n”等等,但这也没有任何作用。
ios - 按时从 GCDAsyncSocket 读取响应(iOS)
这个问题很简单,我只是不知道如何处理它。
我通过以下方式读取数据:
现在,正如预期的那样,我的委托方法被调用并正确读取 JSON 数据:
问题是,由于 GCDAsyncSocket 是异步的,这段代码
后
在数据有机会被读取之前调用。我将如何确保读取数据,然后对其进行分析。
ios - 读取复杂的套接字响应
我有一个代码设计问题,我想不出最有效的方式来处理这个问题:
基本上,我想发送一个 JSON 请求并一次性从服务器读取响应。
我有一个方法,例如:
我会解释什么
确实,基本上向服务器发送一个 JSON 字符串并获得它是否失败的响应。
我知道如何将它写入服务器并阅读它。问题在于一起执行此操作,因此我可以将该 BOOL 值返回为真或假,以查看它是否有效。
现在,在写入套接字后,我得到了响应,并且必须通过委托方法读取它:
一旦服务器给出响应,就会调用它。问题是,所有这些对套接字的读/写都是异步发生的。
既然发生了这种情况,我就没有办法做到这一点:
}
由于之后调用的代码
在读取数据之前执行(因为它都是异步的)。
我意识到我必须在那个委托方法中做点什么。这很好,但是我收到了不同类型的响应,并且每个响应都必须以不同的方式处理。
我的想法是:标记每个写入命令,然后使用一些
在 didReadData 委托方法中。
但是如何正确返回这些数据呢?有时我需要返回一个 BOOL,有时我需要返回一个 NSDictionary、NSString 等...
我希望能够让上面提到的每个请求方法返回它们的关联数据,但我不能(至少效率不高)。我必须为每个请求制作两种不同的方法吗?
IE
我有点困惑如何处理这个问题。
如果我不清楚,我很抱歉,
我很感激我能得到的任何帮助。