1
现在我正在编写一个iPhone应用程序,它将与网络进行交互,并且我打算使用非阻塞的berkley套接字,以便完全控制connect(),accept()和recv()的时序。我不确定的一个问题是如何正确关闭连接()和recv()操作(可能需要几分钟)。在UNIX中,这是通过在select()请求中创建管道并将其与套接字一起使用来完成的。写在管道中的东西会立即中止select(),所以我可以检查关闭等。但是有可能在iPhone上使用管道,是否有可能使用select()?欢迎任何见解或评论。是否可以使用管道与iPhone berkley套接字?
谢谢。什么是iPhone API来创建管道? – grigoryvp 2010-09-08 14:09:42
您可以为'CFSocket'提供一对文件描述符。但重要的是,你不再需要这个管道。由于'runloop'将负责所有的调度。它基本上为你做了整个select()。 (尽管内部可能不会使用select) – 2010-09-08 14:32:04
此外,Apple建议不要使用BSD套接字,因为它们可能无法很好地与设备上的某些底层网络功能集成。请参阅我的答案以获取更多信息:http://stackoverflow.com/questions/2488634/bsd-sockets-dont-behave-in-a-iphone-3g-environment/2488657#2488657 – 2010-09-08 20:05:21