问题标签 [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.
ios - Threading issue with CocoaAsyncSocket and coredata
My app handles socket connection in a background queue. Inside a helper class which will be called from the connection queue, I have to access core data to perform a validation (fetch request). How can I execute the core data fetch in the main queue and pass the values to the connection queue?
The code is:
- I have tried the
performSelectorOnMainThread:withObject:waitUntilDone:YES
. But it moves the socket execution to the main queue and freezes the app. - I tried dispatch_async with
dispatch_get_main_queue()
, but the problem is how can I access the background queue which the socket connection is running (dispatch_get_current_queue
is deprecated.
ios - 托管与 iOS 设备的安全连接
我正在开发一个文件共享应用程序。它适用于两个 iOS 设备之间的 TCP 连接,我需要它们之间的安全连接。我正在使用 GCDAsyncSocket 库进行连接。我之前使用这个库来连接其他接受 SSL 连接的应用程序,所以我对客户端没有任何问题。这是问题;如何托管仅接受具有有效 SSL 证书的 SSL 连接的套接字?谢谢。
ios - GCDAsyncSocket 未释放端口
我正在使用以下代码:
启动侦听 UDP 广播的套接字。
但我似乎只能在模拟器中运行此代码一次。之后,我从 bindToPort 命令收到一条错误消息,说“地址已被使用”。
到目前为止,我发现解决此问题的唯一方法是重新启动机器。从开发人员的角度来看,这是完全不切实际的。
我已经很好地工作了。有什么想法可以改变吗?
ios - 如何在 iOS 中进行多线程处理?
对不起这个问题的模糊标题,我想不出一个简洁的句子来解释我遇到的问题。
基本上我想启动多个线程并传递一个具有线程特定值的对象,我可以在该上下文中使用这些值。这是执行此操作的代码
每个线程都使用正确的thread_bytes
and调用选择器方法,thread_offset
并且还可以访问GCDAsyncSocket
套接字,因此导致许多使用thread_bytes
and的委托方法调用thread_offset
。这是选择器方法。
如果有 N 个线程正在处理,当我发送请求消息时_thread_offset
,例如如果偏移量是 0、2、4、8该上下文中的唯一偏移量。
另外,线程完成时是否有任何回调方法?
objective-c - GCDAsyncSocket 未接收到所有传输的数据,缺少最后一个“块”
我正在尝试将一些字符串和图像数据从 python 脚本发送到在 OSX 上运行的目标 C 应用程序。
我正在使用 GCDAsyncSocket 收集传输的数据,并将其附加到 NSMutableData 直到服务器断开连接。然后我正在处理该 NSData 并将其拆分为原始部分。
传输的数据包括以下内容:
ID 字符串,填充到 16 个字节。
图像编号字符串,填充到 16 个字节。
原始图像数据。
终止字符串,填充到 16 个字节。
问题是我没有接收/获取最后一块数据,我最终错过了 JPEG 图像的结尾,导致图像损坏(尽管大部分显示),并且缺少终止字符串。
这是我使用 GCDAsyncSocket 来获取数据并处理它的代码:
插座连接:
接收到的套接字数据
插座断开
我使用了wireshark,数据正在传输,只是没有通过GCDAsynSocket。
所以,我显然错过了一些东西。像这样的套接字编程和数据编码/解码对我来说相对较新,所以我可能是个白痴。
非常感谢帮助!
谢谢
加雷斯
objective-c - GCDAsyncSocket 客户端公钥
我用 GCDAsyncSocket 制作了一个简单的 TLS 服务器,并想要获取客户端的公钥。我尝试使用这个:
但我在 SecTrustCopyPublicKey 方法中得到了 exc_bad_access。如何将公钥作为 NSString/NSData 获取?
ios - 如何使用 GCDAsynUdpSocket 获取 mac 地址
我正在使用 GCDAyncSocket 进行 UDP 广播。我以 NSData 的形式接收数据。如何从接收到的数据中获取 mac 地址?我试过了
NSString *msg = [[NSString alloc]initWithData:数据编码:NSUTF8StringEncoding];
但它显示味精为零。
如何从收到的数据中获取 MAC 地址?我会很感激你的帮助。
ios - iOS 线程不调用 AdHoc 分发中的特定函数,但在从 xcode 运行时工作
我有一个应用程序,当我从 xcode 在我的 iPad 上运行它时,它可以工作,但是当我为 AdHoc 分发准备它时,它不能正常工作。
我的主题是:
wifi背景是:
socketDidRead:
本质上:wifiBackground检查是否连接到互联网,连接一个socket,向网络发送一个数据包(超时5s),等待读取完成(超时5s),然后重复发送的数据包被更新. 如果网络关闭,它应该重试连接。
当我将它作为 AdHoc 运行时,如果它无法立即连接,它将循环,但一旦读取完成,它将停止(整个线程)而不去 processRead。例如)
为什么永远不会调用 processRead?这适用于 xcode,我不确定为什么它现在不起作用。
我试过了:
但同样的事情发生了。
我打算尝试 performSelectorOnMainThread 但由于 processRead 使用const unsigned char
它给我一个错误,它不是正确的对象。
objective-c - 如何隐藏 10.9 弃用的 GCDAsyncSocket 警告
10.9 弃用了一堆 SSL 东西,我如何隐藏警告或修复问题?
ios - 如何知道这是否是公告板系统发送的最后一个数据包
我正在 ios 上编写一个公告板系统 (BBS) 阅读器。我使用 GCDAsyncSocket 库来处理数据包的发送和接收。我遇到的问题是服务器总是将要发送的数据拆分为多个数据包。我可以通过在 didReceiveData() 函数中打印出接收字符串来看到这种情况。
从 GCDAsyncSocket 自述文件中,我了解 TCP 是一个流。我也知道有一些流结束机制,例如末尾的双 CR LF。我已经使用 WireShark 解析数据包,但在最后一个数据包中没有某种模式的迹象。该站点不归我所有,因此我无法发送某些字节。一定有办法检测最后一个数据包,否则BBS客户端如何处理显示数据?