问题标签 [asyncsocket]

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 回答
3039 浏览

cocoa - Cocoa AsyncUDPSocket 框架,(long)tag 变量解释和我的委托只是有时被称为

我的第一篇文章,也是我的第一个问题。我目前正在使用基于 UDP 的 Artnet protokoll。试图开发一个读取 Artnet 数据的 Cocoa 应用程序。我决定使用AsyncUDPSocket Cocoa 框架并让它以某种方式工作。所以当我尝试使用

我的代表被叫了。如果我用另一个 Artnet 应用程序尝试这个,我的委托永远不会被回调,但我可以在数据包分析器中看到数据包..

我怀疑这一定是由“标签”引起的。有人可以解释(长)标签变量,因为我找不到关于这个值的文档,我在网上找不到答案。另外我可能会补充一点,我对可可开发相对较新,所以也许这是一个非常基本的错误..

下面是我的套接字初始化代码:

和我目前尝试开始工作的代码:

提前致谢,

马蒂亚斯

0 投票
1 回答
348 浏览

c# - 由于 HTTP 响应中的 content-length = 0,有助于消除异步接收器中的循环

一些 Web 服务器在 HTTP 响应标头中返回设置为零的内容长度。我想要一个确定性和高性能的解决方案来接收这种情况下的所有数据。

已知会表现出此行为的 URL(下面的其他 URL):

http://www.washingtonpost.com/wp-dyn/content/article/2010/02/12/AR2010021204894.html?hpid=topnews

标题:

由于 MaxTries 常量,我当前的解决方案不能保证获得所有数据,并且由于 Thread.Sleep() 而速度很慢

上下文中的用法:

样本输出:

编辑:

Nikolai 观察到带有Transfer-encoding: chunked header 的响应需要特殊处理,但可以确定地检测到它们的末端。

然而,除了分块的响应之外,还有其他 URL 最终出现在我的 catch-all 方法中,例如:

http://www.biomedcentral.com/1471-2105/6/197

标题:

http://slampp.abangadek.com/info/

标题:

http://video.forbes.com/embedvideo/?format=frame&height=515&width=336&mode=render&networklink=1

标题:

我想知道我可以在这些响应中寻找什么,就像 Transfer-encoding 标头对第一个 URL 所做的那样,提供了确定性读取整个响应的线索,从而可以避免调用我的方法。

0 投票
1 回答
963 浏览

objective-c - NSThread、AsyncSocket 和对象释放

我有一段使用 AsyncSocket 但将其移动到单独的运行循环的网络代码。我正在使用以下代码创建此运行循环:

这是我的 _workerLoop 的样子(他们都在同一个班级):

现在,根据文档, NSThread 将保留目标,并且由于该线程只会在 AsyncSocket 断开连接时终止,因此在套接字断开连接之前无法释放和释放该对象。

我该如何解决这个问题,或者我做错了什么?

0 投票
2 回答
1140 浏览

iphone - iPhone AsyncSocket 总是在任何端口上连接!

我正在使用(或尝试......)AsyncSocket 连接到服务器,但即使服务器未运行,它也始终连接......我正在使用 SDK 3.1.2。以前有人遇到过这个问题吗?

结果总是2010-02-22 22:54:26.922 mluPresenter[2083:207] Conectou!即使我将端口更改为 1 或更改为超出范围的端口...

提前致谢。

0 投票
1 回答
912 浏览

iphone - iphone/mac - 如何使用 AsyncSocket 下载文件

我有一个带有一些文件的远程服务器。我想使用 AsyncSocket 逐块​​下载文件。我想通过套接字发送具有范围的 HTTP 请求并获取适当的数据块。我了解如何在本地主机上执行此操作,但不是从远程服务器。我真的不知道如何使用connectToHost 和acceptOnInterface(以前的acceptOnAddress)方法。

请帮忙

谢谢

0 投票
1 回答
1786 浏览

visual-c++ - 如何使用套接字在 mfc 中一次将文件从服务器发送到多个客户端?

我正在服务器端和客户端应用程序上制作一个简单的应用程序,用于将文件从一个位置传输到另一个位置,或者如果计算机在网络中,则从一台计算机传输到另一台计算机。

我使用了来自http://www.codeproject.com/KB/IP/SocketFileTransfer.aspx的代码。它正在工作并且文件传输成功。

但我需要一次将文件从服务器传输到多个客户端。我的意思是在服务器上,应该有两个以上的客户端可以连接并且他们可以同时接收文件。

我不知道如何为此维护队列以及如何使用线程和任何其他方式将CSocket对象传递给方法。

我也不知道如何准备 CSocket 对象的队列。

所以,如果您有任何解决方案或替代方法,请告诉我......

0 投票
1 回答
2433 浏览

c# - C# Socket.BeginSend AsyncCallback 行为(超时?)

这是一个我不太了解的异步套接字场景......我有 2 个 Tcp 套接字,一个客户端套接字和一个服务器套接字。我的服务器套接字已绑定并在端口上侦听。

我的客户端套接字连接到服务器套接字(使用 BeginConnect / EndConnect)。然后我使用 BeginSend() 向服务器发送一条消息。在服务器端,我不执行 Receive() 或 BeginReceive()。

发生的情况是我为 BeginSend 调用指定的 AsyncCallback 被调用,它的 IAsyncResult 告诉我它已完成,对 Socket.EndSend() 的调用没有引发任何异常......

只有当 BeginSend 调用实际上向服务器发送了一些东西(即:在服务器接收到所有字节后调用回调)时,是否有我没有得到或不应该调用我的 AsyncCallback 的东西?如果服务器上没有完成接收,在 sendtimeout 到期后不应该调用我的回调并且我对 Socket.EndSend 的调用会引发异常吗?

谢谢

0 投票
1 回答
406 浏览

iphone - 就在 iPhone 退出之前的 sendData (lib AsyncSocket)

我有一个 iPhone 应用程序,可以通过我的 mac 上的 wifi 发送数据。当我退出 iPhone 应用程序时,我想向我的 Mac 发送注销消息。我试图将其发送到:

-applicationWillTerminate方法

但似乎该应用程序之前关闭了我的服务。我如何以及在哪里可以在退出前发送我的消息?

非常感谢 !

0 投票
2 回答
824 浏览

iphone - 如何从套接字中从 NSData 中提取 UIImages

我正在使用 ASyncSocket 将一些 UIImages 从一个设备移动到另一个设备。

本质上,在一台设备上我有:

因此,每隔一段时间就会将新图像添加到套接字中(例如网络摄像头)。

然后,在另一台设备上,我打电话给:

这将回应:

本质上,我想要做的是让 NSTimer 运行,它将调用 @selector(PullImages):

在这里,我希望能够从 ResponseData 中提取图像。我怎么做?可能还没有完整的图像,可能有多个图像,可能有一个半图像!

我想将 NSData 解析为每个现有图像!

有什么帮助吗?提前致谢!

0 投票
1 回答
1072 浏览

c# - 什么是使用 .NET 3.5 异步 System.Net.Sockets.Socket 停止数据流?

我有一个使用异步方法的 .NET 3.5 客户端/服务器套接字接口。客户端连接到服务器,并且连接应保持打开状态,直到应用程序终止。该协议由以下模式组成:

  1. 发送 stx
  2. 接收确认
  3. 发送数据1
  4. 接收确认
  5. 发送数据2(重复5-6,同时有更多数据)
  6. 接收确认
  7. 发送 etx

因此,具有上述两个数据块的单个事务将包含来自客户端的 4 次发送。发送 etx 后,客户端只需等待更多数据发送出去,然后使用 stx 开始下一次传输。我不想破坏各个交易所之间或每个 stx/data/etx 有效负载之后的连接。

现在,连接后,客户端可以发送第一个 stx,并获得一个 ack,但之后我无法将更多数据放到网络上。双方都没有断开连接,套接字仍然完好无损。客户端代码严重缩写如下 - 我遵循在线代码示例中常见的模式。

服务器上的代码非常相似,只是它先接收然后发送响应 - 服务器在发送响应后没有做任何事情(我可以​​告诉)来修改连接。问题是我第二次在客户端点击 SendReceive 时,连接已经处于奇怪的状态。

我是否需要在客户端中做一些事情来保留 SocketAsyncEventArgs,并在套接字/连接的整个生命周期内重新使用相同的对象?我不确定在连接或给定交换的生命周期内应该挂起哪个 eventargs 对象。

我是否需要在服务器中做某事,或不做某事以确保它继续接收数据?

服务器设置和响应处理如下所示:

发送 ABC 时,.NET 跟踪显示以下内容\r\n:

它停在那里。它看起来就像来自客户端的第一次发送,但服务器没有显示任何活动。

我认为现在可能是信息过载,但我很乐意根据需要提供更多详细信息。

谢谢!