在 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 接收连接但新套接字不调用委托的主要内容,如果未能解决你的问题,请参考以下文章
[当套接字可用时使用HTTP长轮询(例如iPhone,Blackberry)