问题标签 [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.
proxy - SOCKS5 连接超时 (GCDAsyncSocket)。(OpenFire、XEP-0065 和 iOS XMPPFramework)
问题:我正在尝试使用 iOS XMPPFramework 和 OpenFire 服务器的 TURNSocket (XEP-0065 - SOCKS5)。我希望能够发送和接收文件。但是,在大多数情况下,接收方没有返回任何响应。我目前怀疑问题与 OpenFire 代理服务器有关,它超时了!这是在本地网络上设置的,我已经编辑了 hosts 文件以指向它。
注意:我的代码基础来自以下教程:http: //mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/
XML 和错误:发件人发送以下 XML(在来回发送一些其他 XEP-0065 XML 帖子之后)...
如果我与我的应用程序的另一个实例聊天,我在尝试使用 proxy.beta.myCompany.co.uk 时在收件人中收到以下错误
错误域 = GCDAsyncSocketErrorDomain 代码 = 3“尝试连接到主机超时”
所以我的主要问题是,为什么它会超时?
额外信息:如果我在我的应用程序的一个实例和 Adium IM 聊天客户端之间进行聊天,我没有得到任何回应。但是,如果我与 Spark IM 聊天客户端聊天,我会收到以下响应...
ios - GCDAsyncSocket readDataWithTimeout 和 didReadData 正在截断大于 1460 字节(1 个数据包)的传入数据字符串
我的 iOS 应用程序使用 GCDAsyncSocket 从服务器接收数据。服务器每分钟收集一次外部数据。该应用程序定期连接到服务器,并接收此数据。服务器会跟踪已发送的内容,因此每分钟的数据只会发送一次。服务器只保留最后一小时的数据。每分钟的数据是一个大约 100 字节(+/- 20 字节)的字符串。
字符串被接收,分成分钟,每分钟被分成每分钟数据中的各种数量。
如果应用程序超过一小时未连接到服务器,应用程序将下载 60 分钟的数据。发生这种情况时,我只能得到大约 15 分钟的数据。我追查到这样一个事实,即 readDataWithTimeout 方法仅在 readQueue 上加载一个数据包,这将我限制为 1460 个字节。我发现当我向队列中添加第二个数据包时,我又得到了 1460 字节的数据。如果字符串是它们的最大长度,并且我正在下载 60 个字符串,那么 5 个数据包就足以捕获所有内容。
- 如果我向读取队列中添加了比必要更多的数据包,并且大多数读取只使用一个数据包,我最终会溢出数据包队列吗?我可以应用某种超时来清除未使用的数据包吗?应用程序无法预测任何给定的读取事件需要多少数据包。
另一个问题是数据包的最后一分钟数据串将不可避免地分成两个数据包。我想做的是收集所有数据包的 NSData 实例,将它们连接成一个大的 NSData 实例,将其转换为字符串,然后正常解析该字符串。
- 我如何知道何时接收到给定读取请求的最后一个数据包,以便我可以组合 NSData 并解析结果字符串?每分钟的字符串都以感叹号“!”结尾,但没有唯一的符号来表示传输的结束。我假设解决问题 1 的相同超时将解决问题 2。
此应用程序已针对 Android 发布。因此,如果可能的话,我想避免更改服务器和 Android 代码以适应 iOS 版本。
cocoa-touch - GCDAsyncUdpSocket 通过 Internet 进行的 UDP 通信
我在互联网上使用 GCDAsyncUdpSocket 时遇到问题。当我在本地计算机上进行测试时,一切正常。
我尝试在使用 3G 密钥连接到互联网的计算机和通过 wifi 连接的 Ipod 之间发送 UDP 消息。不幸的是,消息没有被传输。我尝试使用 GCDAsyncUdpSocket 的示例进行相同的测试:UdpEchoClient 和 UdpEchoServer,但它也无法正常工作。
要知道我的电脑的地址 IP 用 3G 密钥,我查看了系统偏好设置 -> 网络,我还查看了http://whatismyipaddress.com/,我看到地址不同。两者都不起作用。
我通过 wifi 连接的 Ipod 在 NAT/防火墙后面,但根据这个网站:https ://www.gotroot.com/blogpost4-Why-your-should-never-forward-UDP-out-of-your-firewall它应该不是问题。
是否可以在不打开任何端口的情况下在 2 个设备之间发送消息?为什么我的3G电脑上有两个不同的IP地址?
cocoa - GCDAsyncSocket 读取数据问题
我有一个使用 GCDAsyncSocket 作为网络接口库的 Cocoa 直播视频程序。播放视频帧时有明显的卡顿。例如,视频上的时间几乎是正常时间的两倍。通过性能检查,发现GCDAsyncSocket的readDataToLength方法调用过于稀疏。以下是带有时间戳的日志:
我在创建套接字时设置了一个单独的委托调度队列,但这并没有多大帮助。该消息有一个固定的标头,我首先读取标头然后读取有效负载。
有谁知道提高从套接字读取数据的速度?谢谢!
objective-c - Objective-C 委托
我是 iOS 和 Objective-c 的新手,但我尝试使用GCDAsyncSocket 我正在使用它来联系整个应用程序的 TCP/IP 服务器,在每个视图控制器中我想开始从/到服务器发送和接收,所以每次我分配 cocaSocket 的新实例,并像我新客户端一样发送到服务器。
那么我如何确保 cocaSocket 的一个实例可以应用于整个应用程序。
感谢您的回复!
objective-c - 连接时 CocoaAsyncSocket 崩溃
我已将我的网络代码分隔在一个单独的类 IBStore 中。该代码非常简单,并且基于提供的示例:
和:
这是从主视图控制器实例化 IBStore 的方式:
不幸的是,didConnectToHost
应用程序在执行时没有执行,而是在 GCDAsyncSocket.m 中崩溃(挂起)socket4FD = socket(AF_INET, SOCK_STREAM, 0);
任何关于为什么会发生这种情况的想法都将受到高度赞赏。谢谢!
objective-c - GCDAsyncSocket 标签参数
我想知道如何在方法中使用标签参数,例如
如果我想使用标签来识别数据包的类型会怎样?例如,我说标签 == 2 表示数据包是来自客户端的消息,标签 == 1 表示数据包是来自服务器的消息...如果可以,我是否需要调用 readData: withTag:几次(每个不同的标签一次)?
有没有办法说:“读取每个数据而不关心标签”,然后在 didReadData: withTag: 方法中根据标签处理数据?
ios - 如何使用 GCDAsyncUdpSocket 通过 wifi 和蓝牙进行多播
我目前正在使用 GCDAsyncUdpSocket 在 iOS 设备之间通过 wifi 发送多播数据报。
代码很简单..
客户
服务器
这在 wifi 上运行良好。我如何使它也可以通过蓝牙工作?我用谷歌搜索了一堆,找不到任何东西......我需要创建两个单独的套接字吗?一个绑定wifi接口,一个绑定蓝牙接口?
编辑:或者我对一些基本的东西感到困惑?这一定是可能的。GameKit 的 GKSession 正是这样做的,对吧?
objective-c - Mountain Lion 中的 GCDAsyncSocket 问题
我在我的 Mac (Objective-C) 应用程序中使用 GCDAsyncSocket 类时遇到问题。这是我得到的错误:
我真的很难理解这里的问题。我尝试删除并重新添加 GCDAsyncSocket.h 和 .m 文件。我已经验证所有导入都是导入 .h 文件而不是 .m 文件。我已经清理了项目,甚至尝试从头开始制作一个新项目。对可能导致这种情况的任何洞察力都会很棒。(注意:我刚刚升级到山狮 - 不确定它是否是罪魁祸首)
gcdasyncsocket - GCDAsyncSocket 中两个不同来源的数据会冲突吗?
我一直被困在这个问题中。
简而言之,
我有几个设备。他们每个人都会向服务器发送一张图片。由于图片的大小,数据将被分成几个部分。所以每次调用 didReadData: 方法时,我都应该追加传入的数据。
问题来了:(
如果两个或多个设备同时向服务器发送图片,数据是否会冲突?
我是说:
DEVICE1 将发送 data11 data12 data13
DEVICE2 将发送 data21 data22 data23
我得到的数据有没有可能是这个顺序:data11 data21 data12 ....(两包数据刚刚混在一起)?