用socket做網絡應用程序,發送和接收超時好辦,Connect超時目前找來找去只有select這招了 於是,用到了timeval這個家伙。 起初我以為,要粗略設置秒數,就用tv_sec成員,要精確到百萬分之一秒,就用tv_usec,結果設置為1秒的時候 [cpp] FD_ZERO(&fs); FD_SET(sock, &fs); tv.tv_sec = 0; tv.tv_usec = 1000000; ret = select(0, 0, &fs, 0, &tv); if(ret <= 0) { // 鏈接超時 closesocket(sock); return FALSE; } 編譯為debug,運行正常,1秒後超時返回;編譯為release問題就來了,一般等待20多秒,丫丫的 查百度,谷歌未果;查MSDN->NULL 於是自己試試,發現跟64位那個結構體差不多,一個高32位一個低32位;這裡是一個秒數部分,一個微秒部分…… [cpp] FD_ZERO(&fs); FD_SET(sock, &fs); ret = dwConnTime / 1000000; tv.tv_sec = (long)ret; //timeval結構體是多少秒又多少微秒 ret = dwConnTime % 1000000; tv.tv_usec = (long)ret; //精度百萬分之一秒 ret = select(0, 0, &fs, 0, &tv); if(ret <= 0) { closesocket(sock); return FALSE; } 這樣就ooxx了!