问题标签 [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.
objective-c - Objective C,实现聊天应用程序的最佳方式(套接字)
我正在尝试开发一个聊天应用程序。我使用了 AsyncSocket 并按照教程进行操作。所以现在我可以使用 localhost 从 telnet 接收文本消息。
但我不知道如何处理多个聊天。假设三个不同的朋友知道我的 IP 地址和端口号。他们通过套接字向我发送消息。那么我要如何确定哪条消息属于哪个朋友呢?
提前致谢。
multithreading - 异步套接字服务器如何工作?
我应该声明,我不是在询问具体的实施细节(还),而只是对正在发生的事情的一般概述。我了解套接字背后的基本概念,并且需要对整个过程进行澄清。我的(可能是非常错误的)理解目前是这样的:
一个套接字不断地监听想要连接的客户端(在它自己的线程中)。当连接发生时,会引发一个事件,该事件会产生另一个线程来执行连接过程。在连接过程中,客户端被分配了自己的套接字,用于与服务器进行通信。然后,服务器等待来自客户端的数据,当数据到达时,会引发一个事件,该事件会产生一个线程以将数据从流中读取到缓冲区中。
我的问题是:
我的理解有多差?
每个客户端套接字是否需要它自己的线程来监听数据?
数据如何路由到正确的客户端套接字?这是由 TCP/UDP/内核的胆量处理的吗?
在这种线程化环境中,通常共享什么样的数据,争论点是什么?
任何澄清和额外的解释将不胜感激。
编辑:
关于通常共享哪些数据和争用点的问题,我意识到这更多的是实现细节,而不是关于接受连接和发送/接收数据的一般过程的问题。我查看了几个实现(SuperSocket 和 Kayak),并注意到会话缓存和可重用缓冲池之类的一些同步。随意忽略这个问题。我很感激你的所有反馈。
cocoa - 异步套接字和“静默”断开连接
我一直在使用 cocoaasyncsocket 作为使用 asyncsocket 的 Windows .net 服务器的客户端。我正在使用 ProtocolBuffers 对消息进行编码。这些共同构成了一套很棒的工具。
但是最近我注意到,如果我让客户端长时间连接到服务器 - 好几个小时 - 当我尝试请求数据时,消息似乎已发送但从未到达服务器。我将此称为“无声”断开连接,因为如果出现网络问题,我没有收到通常的断开连接。
我正在处理以下方法以进行调试,但没有一个被调用:
没有任何通知,我发现调试起来很棘手。服务器同样没有显示任何断开连接。
谁能指出我如何进一步分析这个方向?
非常感谢。
iphone - 同步套接字上的 writeData 总是在 iPhone 上阻塞
我使用 asyncsocket 示例作为起点来了解有关 iPhone 上的 wlan 通信的更多信息。
在 Mac 上,我启动了一个打开端口 0 的示例服务器。这很有效,因为我可以使用在 mac 上运行的测试客户端写入数据。
在 iPhone 上,我想我设法连接了,因为“连接的流”返回 YES。
然后我想用同步套接字发送数据:(带有完整代码的编辑版本)
*/ syncSocket = [[SyncSocket alloc] initWithTimeout: 10]; syncSocket.nsLog = YES; if (![syncSocket connectToHost: @"192.168.0.30" onPort: 12345]) { NSLog(@"Error connecting syncSocket:"); } NSData *data = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"syncSocket trace 1"); [syncSocket writeData:data]; NSLog(@"syncSocket trace 2");[窗口添加子视图:viewController.view];[窗口 makeKeyAndVisible]; 返回是;}
它永远不会继续发送数据,writeData 总是阻塞。IP 192.168.0.30 是我 Mac 的 IP。正如您上面建议的那样,我现在只是使用了任何端口 12345。
但我真的不知道我必须在 Mac 上做什么才能接收?
如您所见,我实际上使用了syncsocket,然后它阻塞了。
我也尝试了 asyncSocket,然后我在 asyncsocket 类中得到消息:writeStream Can NOT Accept Bytes
也许是我没有正确设置Mac,即我需要在Mac上运行什么应用程序来测试?多谢!
ios - Asyncsocket iPhone 读取数据
我正在尝试使用以下代码捕获来自 .NET 服务器的响应。
进行 telnet 测试有效(我得到响应);但是,使用此代码,我没有得到回应。
我确实获得了与服务器的连接,并且能够向服务器发送信息,但我没有得到回复。
这就是我在日志中得到的;
为什么我没有收到回复?
c# - 如何同步发送和接收?
我的 C# 应用程序(异步客户端/服务器)有问题。当我执行 BeginReceive,然后是 BeginSend 时,一切都很好,数据继续进行。但是当我执行 BeginSend 时,比 BeginReceive 没有任何反应,并且 BeginSend()/BeginReceive() 冻结。
我怎么解决这个问题?超时没有帮助。
谢谢。
c# - C# 异步对象传输(套接字?)
我试图找出处理异步对象传输的最佳方法。
我想要做的是通过连接到一台服务器的网络连接(5-10 个客户端)打开同一应用程序的多个实例,当其中一个应用程序更新其数据时,我需要将该更新传输给所有其他实例。
更新对象将与此类似:
数据不会很大,但是这种类型的对象每秒会从每个客户端传输大约 10-50 次到所有其他客户端。
处理这种数据传输的最佳方式是什么?
我在想的是让服务器对象使用类似于以下内容来监听和接受连接:
但是服务器应该如何处理数据传输呢?
我知道我应该尝试从 in 的所有套接字_clients
接收数据,一旦我接收到数据,我需要将其转发到 in 的所有其他套接字_clinets
,但我应该怎么做呢?我应该如何以及在哪里检测客户端何时终止其连接?
此外,客户端应该监听从服务器接收的数据以及向服务器发送数据。我可以用一个插座处理所有这些,还是应该使用 2 个?
谢谢你的帮助!
iphone - iPhone SDK 是否限制 udp 广播?
如果主机地址是“255.255.255.255”或“192.168.1.255”,将得到
2011-03-30 19:40:34.547 voco[38177:207] AsyncUdpSocket 0x629bf30 收到意外的 CFSocketCallBackType 8。2011-03-30 19:40:34.549 voco[38177:207] 错误域 = NSPOSIXErrorDomain 代码 = 13“权限被拒绝” UserInfo=0x62b4360 {NSLocalizedDescription=Permission denied} 2011-03-30 19:40:34.550 voco[38177:207] 未发送
如果主机地址为“255.255.255.0”或“192.168.0.255”将得到
2011-03-30 19:35:48.415 voco[37930:207] AsyncUdpSocket 0x565fea0 收到意外的 CFSocketCallBackType 8。2011-03-30 19:35:48.417 voco[37930:207] 发送
所以我猜不是我的代码造成的。我该如何解决?
java - Java Non-Blocking and Asynchronous IO with NIO & NIO.2 (JSR203) - Reactor/Proactor 实现
所以在这里我正在阅读我最喜欢的软件模式书籍之一(面向模式的软件架构 - 并发和网络对象的模式),特别是关于 Proactor/Reactor 异步 IO 模式的部分。我可以看到通过使用可选通道,我可以很容易地实现 Reactor 风格的异步 IO 机制(并且已经这样做了)。但是,我看不到如何使用非阻塞写入实现适当的 Proactor 机制。这是利用操作系统管理的非阻塞写功能。
操作系统特定调用支持的功能,如win32 下的GetQueuedCompletionStatus 。
我确实看到 Java 7 通过异步完成处理程序为 NIO 带来了一些更新(这似乎是正确的方向)。话虽这么说......鉴于缺乏对操作系统管理的异步操作(特别是异步写入)的统一跨平台支持,我假设这是一个不利用本机操作系统支持的准实现。
所以我的问题是,在 Java 中基于前摄器的 IO 处理是否可能以一种有利于特定场景的方式进行处理?并且,如果 Java NIO 确实支持基于前摄器的 IO 处理(在 Java 6 或 Java 7 中),是否正在使用操作系统管理的异步 IO 支持(即来自操作系统的完成回调)?此外,如果实现纯粹是在 VM 中,那么性能优势将非常小,以至于使用主动事件处理仅提供一种不同(可能更简单)的方式来构建并发网络处理软件。
对于任何对主动事件处理感兴趣的人来说,这是一篇很好的文章,它概述了优点/缺点,并与传统的每连接线程和反应式 IO 模型进行了比较。
objective-c - asyncsocket "connectToHost" 总是成功并且从不返回失败
我正在使用 asyncsocket 创建与目标 C 的套接字连接。我使用“connectToHost”方法执行此操作。我正在尝试处理套接字连接失败的情况。“connectToHost”应该在连接成功时返回“YES”,否则返回 NO。出于某种原因,它总是返回“是”。我什至提供了一个空白字符串作为主机,它仍然返回是。有什么想法吗?
谢谢,
罗宾