问题标签 [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 回答
141 浏览

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:

  1. I have tried the performSelectorOnMainThread:withObject:waitUntilDone:YES. But it moves the socket execution to the main queue and freezes the app.
  2. 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.
0 投票
1 回答
115 浏览

ios - 托管与 iOS 设备的安全连接

我正在开发一个文件共享应用程序。它适用于两个 iOS 设备之间的 TCP 连接,我需要它们之间的安全连接。我正在使用 GCDAsyncSocket 库进行连接。我之前使用这个库来连接其他接受 SSL 连接的应用程序,所以我对客户端没有任何问题。这是问题;如何托管仅接受具有有效 SSL 证书的 SSL 连接的套接字?谢谢。

0 投票
1 回答
587 浏览

ios - GCDAsyncSocket 未释放端口

我正在使用以下代码:

启动侦听 UDP 广播的套接字。

但我似乎只能在模拟器中运行此代码一次。之后,我从 bindToPort 命令收到一条错误消息,说“地址已被使用”。

到目前为止,我发现解决此问题的唯一方法是重新启动机器。从开发人员的角度来看,这是完全不切实际的。

我已经很好地工作了。有什么想法可以改变吗?

0 投票
3 回答
5450 浏览

ios - 如何在 iOS 中进行多线程处理?

对不起这个问题的模糊标题,我想不出一个简洁的句子来解释我遇到的问题。

基本上我想启动多个线程并传递一个具有线程特定值的对象,我可以在该上下文中使用这些值。这是执行此操作的代码

每个线程都使用正确的thread_bytesand调用选择器方法,thread_offset并且还可以访问GCDAsyncSocket套接字,因此导致许多使用thread_bytesand的委托方法调用thread_offset。这是选择器方法。

如果有 N 个线程正在处理,当我发送请求消息时_thread_offset,例如如果偏移量是 0、2、4、8该上下文中的唯一偏移量。

另外,线程完成时是否有任何回调方法?

0 投票
1 回答
1728 浏览

objective-c - GCDAsyncSocket 未接收到所有传输的数据,缺少最后一个“块”

我正在尝试将一些字符串和图像数据从 python 脚本发送到在 OSX 上运行的目标 C 应用程序。

我正在使用 GCDAsyncSocket 收集传输的数据,并将其附加到 NSMutableData 直到服务器断开连接。然后我正在处理该 NSData 并将其拆分为原始部分。

传输的数据包括以下内容:

ID 字符串,填充到 16 个字节。

图像编号字符串,填充到 16 个字节。

原始图像数据。

终止字符串,填充到 16 个字节。

问题是我没有接收/获取最后一块数据,我最终错过了 JPEG 图像的结尾,导致图像损坏(尽管大部分显示),并且缺少终止字符串。

这是我使用 GCDAsyncSocket 来获取数据并处理它的代码:

插座连接:

接收到的套接字数据

插座断开

我使用了wireshark,数据正在传输,只是没有通过GCDAsynSocket。

所以,我显然错过了一些东西。像这样的套接字编程和数据编码/解码对我来说相对较新,所以我可能是个白痴。

非常感谢帮助!

谢谢

加雷斯

0 投票
1 回答
338 浏览

objective-c - GCDAsyncSocket 客户端公钥

我用 GCDAsyncSocket 制作了一个简单的 TLS 服务器,并想要获取客户端的公钥。我尝试使用这个:

但我在 SecTrustCopyPublicKey 方法中得到了 exc_bad_access。如何将公钥作为 NSString/NSData 获取?

0 投票
0 回答
122 浏览

ios - 如何使用 GCDAsynUdpSocket 获取 mac 地址

我正在使用 GCDAyncSocket 进行 UDP 广播。我以 NSData 的形式接收数据。如何从接收到的数据中获取 mac 地址?我试过了

NSString *msg = [[NSString alloc]initWithData:数据编码:NSUTF8StringEncoding];

但它显示味精为零。

如何从收到的数据中获取 MAC 地址?我会很感激你的帮助。

0 投票
1 回答
136 浏览

ios - iOS 线程不调用 AdHoc 分发中的特定函数,但在从 xcode 运行时工作

我有一个应用程序,当我从 xcode 在我的 iPad 上运行它时,它可以工作,但是当我为 AdHoc 分发准备它时,它不能正常工作。

我的主题是:

wifi背景是:

socketDidRead:

本质上:wifiBackground检查是否连接到互联网,连接一个socket,向网络发送一个数据包(超时5s),等待读取完成(超时5s),然后重复发送的数据包被更新. 如果网络关闭,它应该重试连接。

当我将它作为 AdHoc 运行时,如果它无法立即连接,它将循环,但一旦读取完成,它将停止(整个线程)而不去 processRead。例如)

为什么永远不会调用 processRead?这适用于 xcode,我不确定为什么它现在不起作用。

我试过了:

但同样的事情发生了。

我打算尝试 performSelectorOnMainThread 但由于 processRead 使用const unsigned char它给我一个错误,它不是正确的对象。

0 投票
1 回答
120 浏览

objective-c - 如何隐藏 10.9 弃用的 GCDAsyncSocket 警告

10.9 弃用了一堆 SSL 东西,我如何隐藏警告或修复问题?

0 投票
1 回答
179 浏览

ios - 如何知道这是否是公告板系统发送的最后一个数据包

我正在 ios 上编写一个公告板系统 (BBS) 阅读器。我使用 GCDAsyncSocket 库来处理数据包的发送和接收。我遇到的问题是服务器总是将要发送的数据拆分为多个数据包。我可以通过在 didReceiveData() 函数中打印出接收字符串来看到这种情况。

从 GCDAsyncSocket 自述文件中,我了解 TCP 是一个流。我也知道有一些流结束机制,例如末尾的双 CR LF。我已经使用 WireShark 解析数据包,但在最后一个数据包中没有某种模式的迹象。该站点不归我所有,因此我无法发送某些字节。一定有办法检测最后一个数据包,否则BBS客户端如何处理显示数据?