非阻塞socket怎么判斷其已建立連接?
1.將打開的socket設為非阻塞的,可以用fcntl(socket, F_SETFL, O_NDELAY)完成(有的系統用FNEDLAY也可).
2.發connect調用,這時返回-1,但是errno被設為EINPROGRESS,意即connect仍舊行還沒有完成.
3.將打開的socket設進被監視的可寫(注意不是可讀)文件集合用select進行監視,如果可寫用getsockopt(socket, SOL_SOCKET, SO_ERROR, &error, sizeof(int)); 來得到error的值,如果為零,則connect成功.