问题标签 [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 投票
0 回答
133 浏览

ios - iOS GCDAsynchsocket 打开多个连接

我在 iOS 中使用 GCDAsynchronousSocket 从套接字写入/读取数据。我每 1 秒读取/写入此数据。同时,我希望建立另一个连接以在同一端口上读取/写入不同的数据。我该怎么做呢?创建一个新的 GCDAsynchronousSocket 对象是否正确?请帮助我解决问题。

0 投票
0 回答
795 浏览

ios - 如何知道 GCDAsyncSocket 的 readStream 何时完成无限量数据的读取?

我正在制作一个 iPhone 应用程序,它连接到服务器(我无法控制其协议)并获取文本数据流,其中每行以 CRLF 结尾,行数以及它们的确切长度是未定。我正在递归地调用GCDAsyncSocket'readDataToData:withTimeout:tag:来逐行获取数据。

我以前是从NSStream同步读取的,所以我会通过调用来知道读取何时完成hasBytesAvailable。我最近切换到GCDAsyncSocket,现在我还想知道流何时读取了所有可用数据,以便我可以保存/处理数据、刷新表格、删除覆盖等。

在请求下一次读取之前,我尝试使用与以前类似的技术,在我的socket:didReadData:withTag:委托方法中调用以下内容:

但结果总是YES

我也尝试在发送读取请求后调用该方法progressOfReadReturningTag:bytesDone:total:,当读取完成时它似乎总是返回 1 ,否则返回 nil ,但我不确定以这种方式使用该方法是否可靠。

也许有人可以告诉我progressOfReadReturningTag:...在这种情况下是否真的可靠,或者,如果不是,请指出我另一个方向来解决这个问题。

0 投票
1 回答
895 浏览

ios - Cocoaasyncsocket 多写操作

我已经在我的应用程序中实现了 gcdasynsocket 并执行了多个写入操作。委托 didWriteDataWithTag 被调用了两次,但 didreaddata 只被调用了一次(即)仅用于一次写入操作。

GCDasyncsocket 委托方法

我不确定出了什么问题。请帮我解决问题

0 投票
0 回答
437 浏览

ios - 在 GCDAsyncSocket 中通过 TCP 传输文件

我目前正在编写一个游戏,我打算将 .caf 声音文件从 iPhone 传输到我的 C++ 服务器。现在,当我向 sendGameUpdateWithFile 函数发送消息时,我得到一个EXC_BAD_ACCESS,我真的不知道为什么。

尽管这与任何大学作业无关,但请记住,我是一名 CS 学生,而不是(还)不是专业的网络程序员,因此请在之后判断我的代码。

这是我用来将数据传输到服务器的代码(现在崩溃了):

我用于数据的结构如下所示:

服务器需要给定的 msgtypes——问题出在客户端。

0 投票
1 回答
346 浏览

ios - iOS 6 和使用 gcdasyncsocket 连续接收 udp 包

我在使用 gcdasyncsocket 连续接收 udp 包时遇到问题。这就像 iP5 iOS6 和 iP4 iOS6 接收包 200-300 毫秒然后停止另一个 200-300 并重新开始接收。我用 iPhone 5 iOS7、iPhone 4 iOS 6 和 iPhone 5 iOS6 运行了一些测试。结果确认该问题仅出现在 iOS 6 中。

测试

代码并不复杂,它可以很简单,发送到广播地址“230.0.0.1”,接收器套接字加入组“230.0.0.1”。

发件人

接收者

我怎样才能连续收到?你遇到过类似的问题吗?

更新

我在 iP5 iOS7 -> 6.1 模拟器和 iOS 6.1 模拟器 -> iP5 iOS7 上运行了一些测试。在这两种情况下,我都有连续接收。

更新 v2

我再次运行测试,但现在使用模拟器 6.0 并且我再次连续接收。

0 投票
1 回答
2397 浏览

ios - 使用 iPhone 应用程序中的 GCDAsyncSocket 库建立连接后立即断开套接字

我想从启用 OBD2 Wifi 的适配器读取和写入数据,该适配器用于读取汽车数据和故障代码。为此,我使用 GGCDAsyncSocket 库进行套接字连接。

可以下载CocoaAsyncSocket 库源代码

但它几乎保持连接 10 秒,有时 40-50 秒,然后终止。

日志显示:

套接字断开:错误域 = NSPOSIXErrorDomain 代码 = 57“操作无法完成。套接字未连接”用户信息 = 0x14cd50 {}

任何帮助或想法将不胜感激!

提前致谢 !

请看下面的代码:

0 投票
4 回答
914 浏览

ios - [NSDate date] 在多个设备中的不同结果

首先,我不得不说我在日期和时间设置中设置了自动设置,并且每个设备的时区都是相同的。所以我使用[NSDate date]以毫秒为单位获取时间戳,然后编码NSData并发送到另一个设备。在接收器上,数据正在被解码并用 new 减去[NSDate date]。这样我就可以获得发送和接收消息所需的总时间。我被认为是因为当发送者是 iPhone 4 iOS6 而接收者是 iPhone 5 iOS7 时,接收者的时间戳比发送者早。我不知道为什么?对于这种操作,也许[NSData date]不是最可靠的类?我GCDAsyncUdpSocket用于发送/接收 UDP。

代码发送者

代码接收器

0 投票
1 回答
1030 浏览

java - GCDAsyncsocket 向所有 IP 广播

我正在尝试为微芯片平台实现 IP 发现器应用程序。我正在使用GCDAsyncSocket来执行此操作。如果我发送特定消息,所有感兴趣的设备都将使用其网络凭据进行响应。

使用 GCDAsyncSocket,如果我使用特定的 IP,我可以获得响应。但我不确定如何将此消息广播到网络中的所有 IP。

我的代码:udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

现在,我怎样才能让它发送到所有 IP 而不是只发送一个 IP?在原始 PC java 应用程序中,我可以看到类似

我想在这个应用程序上做同样的事情。感谢一些帮助。

0 投票
1 回答
346 浏览

ios - 使用 GCDAsynSocket api 进行异步值更新

我正在开发一个应用程序,在该应用程序中,我需要使用 OBD 连接器一次更新多个值,例如引擎 RPM、速度等参数。我需要实现异步命令/响应。为此,我使用[gcdAsyncSocket writeData:data withTimeout:-1 tag:uniqueTag];带有唯一标签的异步方式发送命令。

但是当 gcdAsync 的委托方法“socketDidReadDatawithTag”被调用时,它会返回数据但它不正确。例如,如果我发送了一个命令“010C\r”(读取 RPM)和“010D\r”(速度),带有标签263 和 264 ,如果我在 socketDidReadDatawithTag 中解析带有标签 264 的响应,有时它会返回给我 RPM 的数据。(我的响应混淆或 OBD 设备无法处理异步响应)

并且socketdidReadDatawithTag数据和标签不匹配。

0 投票
1 回答
1917 浏览

ios - 为什么 GCDAsyncUdpSocket 在广播模式下一段时间后无法发送/接收数据包?

我正在使用GCDAsyncUdpSocket在我的应用程序中编写一个 UDP 套接字。场景是这样的:当用户点击按钮时,它会在局域网中发送一个广播包然后监听响应,局域网中有一个服务器会响应一个UDP包。当应用程序收到响应时,它会做一些事情。

我设置GCDAsyncUdpSocket如下:

然后我在按钮操作中发送数据包,如下所示:

方法我监听端口做一些事情。一开始它运行良好,但如果您稍后(大约 1 小时)尝试单击该按钮,则它无法再发送 UDP 数据包。

我在局域网中的服务器将打印收到的数据。我认为发送方法有问题。所以我使用 BSD 套接字方法来发送数据。并用于GCDAsyncUdpSocket接收响应。但同样的事情发生了一段时间。这次我可以发送但无法接收。

我错过了什么GCDAsyncUdpSocket吗?为什么一段时间后无法发送/接收?任何帮助将非常感激。