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

objective-c - 为什么我在 iOS 应用程序中收到 EXC_ARITHMETIC 错误?

我的应用程序崩溃并出现 EXC_ARITHMETIC 错误,我不知道为什么。这是发生错误的地方:

当我单击应用程序中的按钮时会发生错误,它连接在我的 ViewController.m 文件中,如下所示:

从同一个文件中调用此代码:

当应用程序加载并且它不会产生错误时,也会调用 btnPressed。同样,如果我在该[self btnPressed];行中添加一个断点,那么当我单击应用程序中的按钮时,它会在断点处停止,当我单击“继续程序执行”时,它也可以正常工作而不会出错。

注意:我正在使用 CocoaAsyncSocket 与 Cocoa 应用程序进行通信。

0 投票
4 回答
17318 浏览

javascript - 您可以使用 PhoneGap 和 iOS 从本机代码(不在回调中)调用 javascript 函数吗?

我希望能够将 PhoneGap 用于我的应用程序。我将不得不构建一个自定义协议/插件,以便我可以从 Javascript 调用本机方法。我知道当本机代码返回时,您可以在 Javascript 中调用成功函数。

我需要做的是从本机代码中调用一个 javascript 函数。基本上,该应用程序将通过本地网络连接到 OSX 配套应用程序,当 OSX 应用程序将数据发送到 iOS 应用程序时,它会以 Objective C 方法进行处理,我需要能够将结果发送到 PhoneGap/javascript 并做一些事情在 WebView 中使用它。

这可能吗?我只能找到有关从 javascript 调用本机的信息,而不是相反。

谢谢,托马斯

在这里使用来自答案的代码:

MyPhoneGapPlugin.m

给我错误'未知接收器'theWebView'你的意思是'UIWebView'吗?

更新:找到答案:使用 phonegap 助手我可以写这样的东西......

0 投票
1 回答
2216 浏览

iphone - CocoaAsyncSocket 在后台后不起作用

我有一个 AsyncSocket 实例,我一直在 iPad 上用作服务器,然后在另一台 iPad 上运行 AsyncSocket 套接字,它充当客户端。我拥有在客户端和服务器之间交换数据的所有必要代码——那里没有问题。

我遇到的问题是一切正常,但在我的应用程序的错误测试期间,我注意到一个特别奇怪(和令人恼火的问题):

如果我关闭服务器 iPad(此时服务器上没有任何套接字的委托被触发),那么客户端将断开连接(并进入我不断重试的循环)。令人讨厌的是,即使服务器恢复正常,客户端仍然无法连接到它。事实上,即使我从头开始重新启动客户端,它仍然无法连接到服务器。我必须重新启动服务器应用程序才能使客户端能够再次连接。

奇怪的是,只有当服务器实际上从顶部的按钮“关闭”(即进入待机状态)时才会触发此错误。如果我只是使用主页按钮将应用程序发送到后台,那么客户端仍然保持与服务器的连接:只有当设备断开连接时,客户端才会收到断开委托消息并断开连接,然后拒绝重新连接。与此同时,服务器完全没有注意到这一点,并且根本没有触发任何委托方法。

概括我的问题:

  • 当设备使用 iPad 顶部的按钮进入待机状态时,AsyncSocket 服务器实例究竟会发生什么?
  • 为什么没有委托方法被触发,但任何连接的客户端都断开连接?
  • 再次打开设备时会发生什么?
  • 为什么客户端无法重新连接?
0 投票
2 回答
14142 浏览

runloop - 如何在当前 RunLoop 中执行 GCDAsyncSocket 中的 didReadData?

我试图获得一个使用 GCDAsyncSocket 的简单示例,并且发现我缺少某些理解,希望各位好人能帮助解释这一点。

我在下面设置了 GCDAsyncSocket 的东西:

并且可以看到我的套接字测试服务器应用程序接收到字符串

“正在测试...123...\r\n”

但是当我让我的套接字测试服务器发回一个字符串时,我天真地期望didReadData委托执行

然而冷酷的现实迫使我学会了这一点,直到我打电话

... didReadData委托不会被调用。

好没问题。我得到它。

更多地阅读文档,它清楚地表明

AsyncSocket 是一个基于 RunLoop 的 TCP 套接字库。

所以现在我在看这个RunLoop的东西,在我看来它就像Microsoft Windows 中的 Message 循环。由于 iOS 是一个事件/msg 驱动的架构(就像 Win32 一样),那么我目前所在的默认主线程显然有它自己的 msg 循环来处理事件。

我的困惑现在让 iOS RunLoop 看起来像是一个单独的实体,必须使用才能让 GCDAsyncSocket 正常工作。

当它声明其默认的运行循环模式集是 NSDefaultRunLoopMode 时,它​​位于主线程中。

迷茫了吗?

所以在 Win32 下,我的 comm 事件处理代码如下所示:

它当然会在它自己的线程中(还没有使用 GCDAsyncSocket 到达那里),但这在某种程度上是它自己的“RunLoop”。

我如何使用GCDAsyncSocket做同样的事情,这样我就不会陷入使用[asyncSocket readDataWithTimeout]调用填充队列的一些轮询循环中?

我觉得我们需要更好的例子来使用这个库。

0 投票
1 回答
1238 浏览

iphone - AsyncSocket TLS HOWTO

我对 AsyncSocket 很陌生,我拼命想让它连接到端口 5222 (xmpp) 上的 Facebook 聊天服务器 (chat.facebook.com),而且它做得很好。在 facebook 切换到安全套接字之前,它曾经可以正常工作。

现在服务器告诉我 start-tls,所以我调用 [socket startTLS:nil] 它什么也没做。之后任何写入套接字的尝试都不会产生任何结果。服务器将停止响应,我不确定我做错了什么。

任何有 AsyncSocket 经验的人都可以尝试连接到服务器并告诉我我做错了什么吗?

感谢您的帮助

0 投票
1 回答
341 浏览

macos - 如何在 Cocoa 套接字中发送格式正确的 HTTP 响应?

我正在制作一个包含内置 HTTP 服务器的应用程序。我需要通过套接字发送一个 PNG 图像,但不知何故它变得一团糟,图像就没有显示出来。这是我的代码(我正在使用 AsyncSockets):

我做错了什么?我认为问题在于响应格式错误,但我不知道,谢谢:)

0 投票
2 回答
1516 浏览

objective-c - 如何刷新 CocoaAsyncSocket?

有没有办法刷新内部缓冲区/队列/等。CocoaAsyncSocket(GCDasyncSocket)?

我想设置这样的环境,当我调用[... readDataWithTimeout ..]方法时,我不希望它从以前的连接中读取任何剩余的垃圾数据,这些数据可能已被缓冲并位于某处。

或者有时我只是想忽略一个数据流并重新开始,所以想确保一个干净的管道。

0 投票
1 回答
721 浏览

iphone - 在 AsyncSocket 框架中,如何在 iPhone 中做多个 Socket Connection?

我现在正在使用 AsyncSocket 进行 iPhone 套接字连接开发。 http://code.google.com/p/cocoaasyncsocket/

但我有一个问题,如何连接 2 个多服务器从服务器收集数据?

我有主机 IP 地址 A:201.22.33.XXX.XX 和主机 IP 地址 B:202.33.XXX.XX

我可以成功连接一台服务器来收集数据。但是如何同时收集两个服务器呢?

我尝试使用自己的委托创建两个套接字对象,我的路径是这样的:
步骤 1 ---- 连接到 A 步骤 2 ---- 连接到 B 步骤 3 ---- 断开 B 但此时我断开连接B、A也断线了……

请帮忙。

0 投票
1 回答
5041 浏览

iphone - GCDAsynSocketDelegate didReadData 方法未被调用。使用 GCDAsynSocket

我正在尝试使用 GCDAsyncSocket 简单地发送和接收消息,但无法使其正常工作。

我成功地建立了连接并编写了消息,但是在阅读我的代表时,我从来没有被调用过。

我正在使用 ios5 和这个设置:

客户:

未调用委托 didReadData 方法

服务器

向客户端写入消息并等待套接字连接成功的响应

这从来没有被称为...

0 投票
0 回答
1237 浏览

iphone - 为 IOS 应用程序保持对服务器开放的持久套接字的最佳实践

我的应用程序需要与服务器建立开放连接以进行实时更新。我需要能够浏览多个视图,在此期间我可以异步发送和接收数据。目标是让应用程序自动实时更新数据。

我想做的是有一个从 NSObject 继承的单独的套接字管理器类,它具有 CocoaAsyncSocket 的委托函数和一些辅助函数,然后当持久套接字发生事情时,它在类中处理并发出通知根据您当前所在的视图,它们会产生不同的效果。

这样做的首选方法是什么?为这个套接字管理器设置一个协议并让每个 UI 视图都成为一个委托*?还是让套接字管理器坐在后台线程中并发送通知会更好?相对于电池寿命是否有首选?

*或多或少像http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server