我想使用read()和ioctl(),但想要通過使用超時來控制讀取應該等待的時間。 關於如何做到這一點的任何想法?如何在Unix上使用read()在C++上的套接字上使用超時
到目前爲止,我所知道的是:
//CLIENT.cpp
struct timeval tv={1,0};
setsockopt(mysocket, SOL_SOCKET, SO_RCVTIMEO, (char *) &tv, sizeof(tv));
connect(mysocket, &sock_dest, sizeof(struct sockaddr));
len = read(mysocket, buffer, 10);
我嘗試使用服務器上的一個5秒的延遲,但它沒有超時......你想要什麼
您可以嘗試使用[fcntl(2)](http://linux.die.net/man/2/fcntl)設置'O_NONBLOCK',然後使用[select(2)](http:// linux。 die.net/man/2/select)找出套接字何時準備讀取(select允許您指定超時)。 – 2012-02-06 16:21:36
同意。順便說一句,如果你關心'read'需要多長時間,你可能應該關心'connect'需要多長時間(如果它超時,可能會有一段時間)。在調用'connect'之前,你可以使套接字非阻塞,並通過'select'或'poll'處理。 – Useless 2012-02-06 16:25:05