在 iPhone 上侦听 CocoaASyncSocket 接收连接但新套接字不调用委托

Posted

技术标签:

【中文标题】在 iPhone 上侦听 CocoaASyncSocket 接收连接但新套接字不调用委托【英文标题】:Listening CocoaASyncSocket on iPhone receiving connection but new socket does not call delegate 【发布时间】:2010-11-19 23:05:16 【问题描述】:

我正在尝试通过指定 IP 在两个设备之间实现基本的消息传递。当一个设备告诉它的监听套接字监听如下:

UInt16 port = 59647;
NSError *err = nil;
[socket acceptOnPort:port error:&err];

didAcceptNewSocket 委托被正确调用,并且应该向连接的 IP:Port 返回一个新套接字。然而,据我所知,新套接字应该调用didConnectToHost,据我所知不是。

didConnectToHost 已正确实现,因为启动与其套接字的连接的设备在连接建立后正确调用它。

我在didAcceptNewSocket 中没有做任何事情,除了一些NSLogs 并将旧的侦听套接字设置为新的(因为之后不需要它,并且之前将其分配给不同的变量并没有改变任何东西,也不应该)。

什么会使我在监听端的新套接字不调用这个委托?

【问题讨论】:

【参考方案1】:

由于您正在处理客户端和服务器,因此重要的是要意识到只有客户端会调用socket:didConnectToHost:port: 委托方法,因为它是连接到主机的客户端(而不是相反)。

在服务器上,socket:didAcceptNewSocket: 委托方法被调用,侦听套接字作为第一个参数。

【讨论】:

我已经很久没有这样做了,但事后看来,这似乎是合理的推理。

以上是关于在 iPhone 上侦听 CocoaASyncSocket 接收连接但新套接字不调用委托的主要内容,如果未能解决你的问题,请参考以下文章

无法在移动设备上点击 h1

[当套接字可用时使用HTTP长轮询(例如iPhone,Blackberry)

无法让 nextcloud 在端口 82 上侦听

如何在 ESC 键上调用自定义侦听器而不是默认的 shell 侦听器?

接受侦听套接字上的侦听套接字上的连接(并且不再侦听)?

无法在正在侦听的端口上远程登录 Web 服务器