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