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

queue - CocoaAsyncSocket / GCDAsyncSocket 在队列上的写入之间添加延迟

我有以下功能:

它工作得很好,除了套接字服务器在两次写入之间需要一秒钟左右的时间才能工作。我想知道是否有人遇到过同样的问题,并且可以阐明如何实现这一目标。谢谢。

0 投票
1 回答
94 浏览

objective-c - 构建控制台应用程序时 CocoaAsyncSocket 未按预期运行

我正在尝试编写一个简单的客户端,它应该使用 CocoaAsyncSocket 通过 TCP 连接到服务器。我有一个 MyClass 类,它被设置为 CocoaAsyncSocket 的委托,并且在构建“Cococa 应用程序”(带有 UI)时,该类按应有的方式工作并连接到服务器,并且正在调用 didConnectToHost 方法。

在职的

但是,当使用下面的主文件构建控制台应用程序时,它不起作用。我只想启动这个类并让它在后台运行。

不工作

0 投票
2 回答
239 浏览

ios - 读取整个 html 字符串 Asyncsocket iOS

嗨,我想从服务器读取整个 html,而不仅仅是像“HTTP/1.1 200 OK”这样的请求,我的意思也是 html 代码。但我不知道怎么做。我正在使用“ https://github.com/roustem/AsyncSocket ”中的 Asyncsocket 库有人知道我该如何处理?我用了功能

但数据很短,只显示http请求。

谢谢

0 投票
1 回答
1481 浏览

objective-c - Issue Connecting with GCDAsyncSocket with OSX executable

I have the excellent GCDAsyncSocket running perfectly on an iOS app I have developed.

I was just playing around with setting up a Mac OSX command line program that uses the library in a similar way to log to SQLite DB but can't get it to even attempt to connect to host. No errors get generated. The program doesn't crash or anything so don't have an idea about why it's not working. Does anyone have an idea why this won't work?

The console only prints out the following (with no connect/disconnect/read/write logging i.e. the socket delegate methods are not being called):

Here is quite a bit of the code I am using:

main.m

LoggerClass.h

LoggerClass.m

Device.h

Device.m

0 投票
1 回答
2187 浏览

cocoa-touch - 在 iOS 设备上运行的 SSL/TLS 服务器

是否可以构建在 iOS 设备上运行的 SSL/TLS 服务器?如果是,如何?

我的疑问与这些问题有关:在设备上,我可以即时创建自签名证书以供以后使用吗?或者我可以告诉 SSL/TLS 不要使用证书吗?

在我的 iOS 应用程序中,我使用的是AsyncSocket。该应用程序同时是客户端和服务器。

客户端是这样实现的:

服务器端(在另一个 iOS 设备上运行)以这种方式实现:

但是,当客户端尝试连接到服务器时,onSocket:willDisconnectWithError:会调用委托的方法,并出现错误Domain=kCFStreamErrorDomainSSL Code=-9848

0 投票
1 回答
202 浏览

ios - AsyncSocket 的读取行为不一致

我正在使用 GCDAsyncSocket 编写一个 RubyMotion 应用程序,并且在将数据读取到特定术语(在我的情况下为 CRLF)时遇到不一致的结果。它有时会读取多个 CRLF 序列,而不是总是向上读取直到并包括下一个 CRLF。这本身不一定是问题,我可以拆分字符串并解析它,但是它有时会在后续字符串的中途读取,因此似乎会发生一些数据丢失。这似乎只发生在快速接收数据时。这是一个输出示例。我发送了字符串“你好,这是一个测试字符串。” 从服务器到我的应用程序快速连续 100 次。正如您从下面的代码中看到的那样,我将字符串拆分为 \r\n,为该特定读取调用分配一个随机数并打印出结果数组的每个部分(0、1、2 等)。

ID 252 Part 0:你好,这是一个测试字符串。ID 252 第 1 部分:您好,这是一个测试字符串。ID 252 第 2 部分:您好,这是一个测试字符串。ID 252 第 3 部分:您好,这是一个测试字符串。ID 252 第 4 部分:您好,这是一个测试字符串。ID 252 第 5 部分:您好,这是一个测试字符串。ID 252 第 6 部分:您好,这是一个测试字符串。ID 252 第 7 部分:您好,这是一个测试字符串。ID 252 第 8 部分:您好,这是一个测试 st ID 780 第 0 部分:您好,这是一个测试字符串。ID 419 Part 0:你好,这是一个测试字符串。ID 128 Part 0:你好,这是一个测试字符串。ID 638 Part 0:你好,这是一个测试字符串。ID 950 Part 0:你好,这是一个测试字符串。ID 950 第 1 部分:字符串。ID 704 Part 0:你好,这是一个测试字符串。

正如您在 read 950 中看到的那样,肯定会发生一些损失。这是我的代码的相关位。

当我写这篇文章时,我想知道使用 GCDAsyncSocket 是否可以解决这个问题,但如果我改变它:@ts = GCDAsyncSocket.alloc.initWithDelegate(self, delegateQueue:Dispatch::Queue.main) 那么它会连接,但是我的委托方法根本不起作用,似乎也没有发送数据。任何帮助,将不胜感激。

0 投票
3 回答
3626 浏览

ios - 为什么GCDAsyncSocket连接在设备锁定时被终止,但在按下主页按钮时没有?

这发生在设备上而不是模拟器上。我打开我的应用程序并使用 GCDAsyncSocket 连接到服务器。当我按下主页按钮,将应用程序置于后台,然后切换回应用程序时,套接字仍然连接。这里没问题。

但是如果我真的锁定了设备然后解锁它,即使是马上,插座也会断开。- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err {委托方法的错误说...

错误:错误域 = GCDAsyncSocketErrorDomain 代码 = 7“远程对等方关闭的套接字” UserInfo = 0x20051cb0 {NSLocalizedDescription =远程对等方关闭的套接字}

我检查了服务器,没有明确破坏连接的代码。我认为这是与 iOS 相关的事情,当应用程序发送到后台时会终止连接。但是,我想知道是不是因为应用程序被发送到后台,那么为什么主页按钮不会终止连接但锁定设备呢?

有没有什么办法解决这一问题?

===== 当前进展 =====

似乎没有解决方案。现在作为一种解决方法。如果它意外断开连接,我只是重新连接。将保持这个问题悬而未决,希望奇迹出现。;)

0 投票
2 回答
3924 浏览

ios - 使用 GCDAsyncSocket 进行同步通信

我在我的应用程序中使用GCDAsyncSocket( CocoaAsyncSocket) 进行套接字通信。由于 的异步特性GCDAsyncSocket,我的网络请求(submitMessage如下)与接收数据时运行的回调块(socket:didReadData)分离。

这种方法适用于一次性交易。但是在某些情况下,我需要发布一个请求,然后使用接收到的数据,发布另一个请求。我无法让它正常工作。基本上,我需要这样的东西:

或者

严格的顺序是 request1 - callback1 - request2 - callback2。

那么问题来了,如何在第一个请求回调后阻止第二个请求运行呢?GCD(?dispatch_sync)会是要走的路吗?

编辑

我最终使用了类似于@tigloo 建议的解决方案(因此接受了他的回答),但使用NSCondition了代替GCD(如果有人对细节感兴趣,我遵循了这个很棒的讨论)。我已经在运行多个线程(主线程中的 UI,另一个线程中的高级套接字通信,以及第三个线程中的套接字操作)。设置类属性并使用NSCondition锁定GCDAsyncSocket委托直到响应到达似乎是最干净的方法。

0 投票
1 回答
1700 浏览

ios - NSNetService 和 GCDAsynSocket 有什么区别?

在 iOS 上,我使用 bonjour 来查找其他设备,以便在两者之间传输数据。我打算将 NSNetService 用于 bonjour,将 CocoaAsyncSocket 用于流式传输。

这个例子中,他们在同一个端口上创建了一个 GCDAsyncSocket 和一个 NSNetService :

NSNetService有人可以解释和之间的区别GCDAsyncSocket吗?

对我来说,好像我在同一个端口上创建了两个套接字。特别是因为您可以从NSNetService.

0 投票
0 回答
92 浏览

ios - 当对方突然断开连接时,CocoaAsyncSocket 不给套接字断开连接

有没有人在 cocoaAsyncSocket 工作过 TCP 连接???当 TCP 连接被对方​​突然断开时,我没有断开套接字??或者任何人都可以推荐一个可靠的良好 TCP 连接库吗?