问题标签 [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.
objective-c - 为什么我在 iOS 应用程序中收到 EXC_ARITHMETIC 错误?
我的应用程序崩溃并出现 EXC_ARITHMETIC 错误,我不知道为什么。这是发生错误的地方:
当我单击应用程序中的按钮时会发生错误,它连接在我的 ViewController.m 文件中,如下所示:
从同一个文件中调用此代码:
当应用程序加载并且它不会产生错误时,也会调用 btnPressed。同样,如果我在该[self btnPressed];
行中添加一个断点,那么当我单击应用程序中的按钮时,它会在断点处停止,当我单击“继续程序执行”时,它也可以正常工作而不会出错。
注意:我正在使用 CocoaAsyncSocket 与 Cocoa 应用程序进行通信。
javascript - 您可以使用 PhoneGap 和 iOS 从本机代码(不在回调中)调用 javascript 函数吗?
我希望能够将 PhoneGap 用于我的应用程序。我将不得不构建一个自定义协议/插件,以便我可以从 Javascript 调用本机方法。我知道当本机代码返回时,您可以在 Javascript 中调用成功函数。
我需要做的是从本机代码中调用一个 javascript 函数。基本上,该应用程序将通过本地网络连接到 OSX 配套应用程序,当 OSX 应用程序将数据发送到 iOS 应用程序时,它会以 Objective C 方法进行处理,我需要能够将结果发送到 PhoneGap/javascript 并做一些事情在 WebView 中使用它。
这可能吗?我只能找到有关从 javascript 调用本机的信息,而不是相反。
谢谢,托马斯
在这里使用来自答案的代码:
MyPhoneGapPlugin.m
给我错误'未知接收器'theWebView'你的意思是'UIWebView'吗?
更新:找到答案:使用 phonegap 助手我可以写这样的东西......
iphone - CocoaAsyncSocket 在后台后不起作用
我有一个 AsyncSocket 实例,我一直在 iPad 上用作服务器,然后在另一台 iPad 上运行 AsyncSocket 套接字,它充当客户端。我拥有在客户端和服务器之间交换数据的所有必要代码——那里没有问题。
我遇到的问题是一切正常,但在我的应用程序的错误测试期间,我注意到一个特别奇怪(和令人恼火的问题):
如果我关闭服务器 iPad(此时服务器上没有任何套接字的委托被触发),那么客户端将断开连接(并进入我不断重试的循环)。令人讨厌的是,即使服务器恢复正常,客户端仍然无法连接到它。事实上,即使我从头开始重新启动客户端,它仍然无法连接到服务器。我必须重新启动服务器应用程序才能使客户端能够再次连接。
奇怪的是,只有当服务器实际上从顶部的按钮“关闭”(即进入待机状态)时才会触发此错误。如果我只是使用主页按钮将应用程序发送到后台,那么客户端仍然保持与服务器的连接:只有当设备断开连接时,客户端才会收到断开委托消息并断开连接,然后拒绝重新连接。与此同时,服务器完全没有注意到这一点,并且根本没有触发任何委托方法。
概括我的问题:
- 当设备使用 iPad 顶部的按钮进入待机状态时,AsyncSocket 服务器实例究竟会发生什么?
- 为什么没有委托方法被触发,但任何连接的客户端都断开连接?
- 再次打开设备时会发生什么?
- 为什么客户端无法重新连接?
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]调用填充队列的一些轮询循环中?
我觉得我们需要更好的例子来使用这个库。
iphone - AsyncSocket TLS HOWTO
我对 AsyncSocket 很陌生,我拼命想让它连接到端口 5222 (xmpp) 上的 Facebook 聊天服务器 (chat.facebook.com),而且它做得很好。在 facebook 切换到安全套接字之前,它曾经可以正常工作。
现在服务器告诉我 start-tls,所以我调用 [socket startTLS:nil] 它什么也没做。之后任何写入套接字的尝试都不会产生任何结果。服务器将停止响应,我不确定我做错了什么。
任何有 AsyncSocket 经验的人都可以尝试连接到服务器并告诉我我做错了什么吗?
感谢您的帮助
macos - 如何在 Cocoa 套接字中发送格式正确的 HTTP 响应?
我正在制作一个包含内置 HTTP 服务器的应用程序。我需要通过套接字发送一个 PNG 图像,但不知何故它变得一团糟,图像就没有显示出来。这是我的代码(我正在使用 AsyncSockets):
我做错了什么?我认为问题在于响应格式错误,但我不知道,谢谢:)
objective-c - 如何刷新 CocoaAsyncSocket?
有没有办法刷新内部缓冲区/队列/等。CocoaAsyncSocket(GCDasyncSocket)?
我想设置这样的环境,当我调用[... readDataWithTimeout ..]方法时,我不希望它从以前的连接中读取任何剩余的垃圾数据,这些数据可能已被缓冲并位于某处。
或者有时我只是想忽略一个数据流并重新开始,所以想确保一个干净的管道。
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也断线了……
请帮忙。
iphone - GCDAsynSocketDelegate didReadData 方法未被调用。使用 GCDAsynSocket
我正在尝试使用 GCDAsyncSocket 简单地发送和接收消息,但无法使其正常工作。
我成功地建立了连接并编写了消息,但是在阅读我的代表时,我从来没有被调用过。
我正在使用 ios5 和这个设置:
客户:
未调用委托 didReadData 方法
服务器
向客户端写入消息并等待套接字连接成功的响应
这从来没有被称为...
iphone - 为 IOS 应用程序保持对服务器开放的持久套接字的最佳实践
我的应用程序需要与服务器建立开放连接以进行实时更新。我需要能够浏览多个视图,在此期间我可以异步发送和接收数据。目标是让应用程序自动实时更新数据。
我想做的是有一个从 NSObject 继承的单独的套接字管理器类,它具有 CocoaAsyncSocket 的委托函数和一些辅助函数,然后当持久套接字发生事情时,它在类中处理并发出通知根据您当前所在的视图,它们会产生不同的效果。
这样做的首选方法是什么?为这个套接字管理器设置一个协议并让每个 UI 视图都成为一个委托*?还是让套接字管理器坐在后台线程中并发送通知会更好?相对于电池寿命是否有首选?
*或多或少像http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server