小编imp*_*t27的帖子

NSStream在打开期间接收NSStreamEventEndEncountered

我有一个使用NSStream连接的客户端 - 服务器应用程序.有时在尝试打开连接时,连接的一端在首次尝试发送消息时会获得NSStreamEventEndEncountered.

我使用CFStream和NSStream之间的桥梁.我的服务器创建一个套接字:

_ipv4cfsock = CFSocketCreate(kCFAllocatorDefault,PF_INET, SOCK_STREAM,IPPROTO_TCP, kCFSocketAcceptCallBack, handleConnect, &info);
Run Code Online (Sandbox Code Playgroud)

在handleConnect回调函数中,CFStreamCreatePairWithSocket用于获取两个CFStream.

我的客户端CFStreamCreatePairWithSocketToHost用来连接主机.

客户端连接(创建NSStream)然后发送ping.当我的服务器收到连接时,它会打开一个NSStream,当它收到ping时它发送一个pong.

当其中一个连接关闭时,另一个应该获得NSStreanEventEndEncountered,因为我已kCFStreamPropertyShouldCloseNativeSocket在流上设置为true.

我得到了几个不同的结果:我使用NSLog来查看发生了什么.

- 大多数时候连接打开并按预期工作.

Server did recieve new connection
Server recieved ping
Server Sent pong
Client recieved pong
Run Code Online (Sandbox Code Playgroud)

- 尝试发送pong时,连接关闭(NSStreamEventEndEncountered).客户端不接收pong但收到NSStreamEventEndEncountered

Server did recieve new connection
Server recieved ping
Server recieved pong
Server closed
Client closed
Run Code Online (Sandbox Code Playgroud)

- 尝试发送ping时连接关闭(NSStreamEventEndEncountered).服务器不接收ping或NSStreamEventEndEncountered

Server did recieve new connection
Client closed
Run Code Online (Sandbox Code Playgroud)

- 尝试发送ping时收到错误:

Server did recieve new connection;
Error recieved: The operation couldn’t be completed. Connection reset …
Run Code Online (Sandbox Code Playgroud)

sockets nsstream cfstream

3
推荐指数
1
解决办法
3911
查看次数

标签 统计

cfstream ×1

nsstream ×1

sockets ×1