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

c# - .NET 关于异步套接字操作和消息框架的问题

我一直在到处寻找有关如何处理 TCP 消息帧的示例。我看到很多例子,其中 NetworkStreams 被传递到 StreamReader 或 StreamWriter 对象,然后使用 ReadLine 或 WriteLine 方法处理 '\n' 分隔的消息。我的应用程序协议包含以 '\n' 结尾的消息,因此 NetworkStream 似乎是要走的路。但是,我找不到任何关于结合异步套接字处理所有这些的正确方法的具体示例。下面调用 ReceiveCallback() 时,如何实现 NetworkStream 和 StreamReader 类来处理消息帧?根据我所阅读的内容,我可能会在一次接收中获得一条消息的一部分,而在下一次接收中获得消息的其余部分(包括'\n')。这是否意味着我可以获得一条消息的结尾和下一条消息的一部分?当然,必须有一种更简单的方法来处理这个问题。

我有以下代码:

0 投票
1 回答
622 浏览

networking - IOS4 - 在 Wifi 上使用 UDP 套接字发送数据

我正在尝试使用 AsyncUDPSocket 类发送数据。我可以使用 iPhone 模拟器通过网络将数据发送到另一台运行简单 C 编码监听服务器的机器。我还可以使用连接到模拟器(服务器)的客户端通过线路接收数据。但是,当我通过 Wifi 尝试使用模拟器时,我只能发送数据而不能接收任何数据。

我在另一篇文章中读到,单播数据使这成为可能。如何使用 AsyncUDPSocket 实现这一点?

谢谢,安杰洛。

0 投票
0 回答
564 浏览

iphone - AsyncSocket 只读取一次?


我制作了没有 CLRFdata 的简单客户端服务器,但我给出了带有长度消息的消息头。这是我的代码:

该方法发送数据

此方法从套接字长度 = 1 字节读取数据,直到标头上的代码长。

和这个方法

我成功使用此代码从服务器发送数据和接收数据,我尝试登录,服务器获得数据和通知,我使用此代码接收消息,但之后当我再次发送消息时,我无法从服务器接收消息,但是在 TCPDUMP 上,我看到任何发送到服务器的消息和带有消息的服务器响应?

任何人都可以解决我的代码问题吗?谢谢。

0 投票
1 回答
349 浏览

sockets - 从 Unix SOCK_STREAM 套接字读取大量数据

我是异步 I/O 的新手。我需要从 Unix SOCK_STREAM 套接字中读取大量数据。我正在使用非阻塞套接字。它可能需要不止一个 read/recv()。那部分对我来说很好。

我的疑问是——如果一次有 3-4 个客户端正在向我的服务器套接字写入大量数据,那么每个客户端都在写入 100K 数据。是否可能是我的第一次读取是从客户端 1 读取一些数据(例如 40 K),第二次读取是从客户端 2 读取数据,第三次读取是再次从客户端 1 读取剩余数据?

问候 DJ

0 投票
3 回答
1491 浏览

c# - 如何通过服务器套接字安全地将数据流式传输到另一个套接字?

我正在为正在设计的 iPhone 应用程序编写服务器应用程序。iPhone 应用程序是用 C# (MonoTouch) 编写的,服务器也是用 C# 编写的 (.NET 4.0)

我在网络层使用异步套接字。服务器允许两个或多个 iPhone(“设备”)相互连接并能够双向发送数据。根据传入的消息,服务器要么自己处理消息,要么将数据中继到与发送设备相同的组中的其他设备。它可以通过首先解码数据包的标头并确定它是什么类型的数据包来做出这个决定。

这是通过以前 8 个字节为两个整数的方式来构建流的,即标头的长度和有效负载的长度(可以比标头大得多)。

服务器从套接字(异步)读取前 8 个字节,因此它具有两个部分的长度。然后它再次读取,直到标题部分的总长度。

然后它对标头进行反序列化,并根据其中的信息,可以查看是否应将剩余数据(有效负载)转发到另一台设备,或者是否应该由服务器本身处理。如果需要将其转发到另一台设备,那么下一步是以 1024 字节为单位读取进入套接字的数据,并通过连接到接收设备的另一个套接字使用异步发送直接写入这些数据。

这减少了服务器的内存需求,因为我没有将整个数据包加载到缓冲区中,然后将其重新发送到接收方。

但是,由于异步套接字的性质,我不能保证在一次读取中接收到整个有效负载,因此必须继续读取直到我收到所有字节。在中继到其最终目的地的情况下,这意味着我正在为从发送者接收到的每个字节块调用 BeginSend(),并将该块转发给接收者,一次一个块。

这样做的问题是,因为我使用的是异步套接字,这使得另一个线程有可能对同一个接收者(因此也是相同的最终目标套接字)进行类似的操作,因此来自两个线程的块很可能会混淆并破坏发送给该收件人的所有数据。例如:如果第一个线程发送一个块,并且正在等待来自发送者的下一个块(因此它可以转发它),那么第二个线程可以发送它的一个数据块,并破坏第一个线程的(以及第二个线程就此而言)数据。

当我写这篇文章时,我只是想知道它是否像锁定套接字对象一样简单?!这会是正确的选择,还是会导致其他问题(例如:通过锁定的套接字接收从远程设备发回的数据时出现问题?)

提前致谢!

0 投票
2 回答
1844 浏览

udp - asyncudpsocket 未按预期发送 UDP

我在 mini MAC 10.5.8 和 Simulator 3.1 上运行 XCODE 3.1.4 我想为一些远程控制发送一个短的 UDP 字符串并制作了以下代码

基本上它确实在模拟器中编译和运行......但它从不向目标发送任何 UDP。我希望有人能给我一个线索为什么它不起作用

我的 .H 代码

我的 .m 代码

0 投票
1 回答
7933 浏览

c - unix套接字中的异步和非阻塞有什么区别?

我在 nginx 中看到这样的代码:

fcntl(s, F_SETFL, fcntl(s, F_GETFL) | O_NONBLOCK)任何人都可以告诉我和之间有什么区别ioctl(s, FIOASYNC, &on),不是asyncnonblocking同一件事吗?

0 投票
1 回答
180 浏览

ios - 如何通过 iPad 上的套接字同步计数器

我在 PC 上有一个应用程序,它显示播放的 mp3 歌曲的时间信息。我现在需要在 iPad 应用程序中显示这个时间信息。剩余时间、播放器位置和歌曲长度的计数计时器必须在 iPad 和 PC 之间同步。

我考虑过使用套接字连接(iPad 上的 AsyncSocket)来保持计数器同步。

有没有更好的方法来做到这一点?我不想跑错方向...

此外,将来应该可以有不止一台 iPad 显示信息。这是一个“很高兴拥有”的功能......

我不需要准备好使用代码片段,这更像是一个理论问题。(如果有人有现成的代码片段,那对我也有好处:-))

MadMaxApp

0 投票
1 回答
3597 浏览

iphone - iOS SDK:如何检查端口是否打开?

我还没有找到任何关于如何检查端口是否打开的信息。我尝试使用 AsyncSocket 类来实现它,但它始终返回 TRUE,尽管我拒绝与服务器上该端口的所有连接。此外,我尝试使用isConnectedAsyncSocket 的方法,但总是返回 FALSE。

到目前为止我的代码:

0 投票
0 回答
215 浏览

ios - iPad 上 Windows/mac 应用程序的流式屏幕和操作

我目前正在 iPad 上开发一个项目,其中远程 windows/mac 应用程序流显示在 iPad 上。最后,通过 iPad 触摸,我可以在远程 windows/mac 应用程序上执行操作。我有几个问题: - 我们是否必须每隔 x 秒对远程应用程序进行一次屏幕截图并将图像传输到 iPad 应用程序,还是有更简单的方法?- 我目前正在使用 Bonjour 协议进行网络,使用 Asyncsocket,但我不确定触摸事件可以/如何通过连接发送。

谢谢