[問題] Socket IO 不正常
小弟有個 socket 程式在收封包時會卡住的問題,想請問大家,
程式片段 ==>
01: FD_ZERO(&readList);
02: FD_SET(udpSd, &readList);
03:
04: rc = select(maxfd1, &readList, NULL, NULL, wait_time, 0);
05: if (rc > 0) {
06: if (FD_ISSET(udpSd, &readList))
07: {
08: cnt = recvfrom(udpSd, udpBuf, SZ_UDP_BUF, 0, &from_addr, &from_len);
09: if (cnt > 0) {
10: .....
11: }
12: }
13: ...
14: }
此片段是某個 thread 會執行到的一段程式碼。
在執行時會卡在第8行,無法從 recvfrom 回來。
雖然在第8行,給 recvfrom 的 flag 是 0,表示是 blocked 的 socket,
然透過第4行的 select() 叫用,
應該是不會讓 recvfrom 因收不到 data 而卡住才對。
請教大家,發生 recvfrom 卡住的狀況其可能原因為何呢 ?
----
ps: 試過第8行的 flag 指定為 nonblocked 的話,就不會卡住,
但小弟想追查為何會卡住。
----
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.160.138
→
09/15 14:44, , 1F
09/15 14:44, 1F
→
09/15 15:10, , 2F
09/15 15:10, 2F
→
09/15 15:11, , 3F
09/15 15:11, 3F
→
09/15 15:12, , 4F
09/15 15:12, 4F
→
09/15 15:13, , 5F
09/15 15:13, 5F
→
09/15 15:13, , 6F
09/15 15:13, 6F
→
09/15 15:13, , 7F
09/15 15:13, 7F
→
09/15 15:17, , 8F
09/15 15:17, 8F
推
09/15 15:21, , 9F
09/15 15:21, 9F
→
09/15 15:23, , 10F
09/15 15:23, 10F
→
09/16 11:40, , 11F
09/16 11:40, 11F
→
09/16 11:44, , 12F
09/16 11:44, 12F
→
09/16 11:45, , 13F
09/16 11:45, 13F
→
09/16 11:53, , 14F
09/16 11:53, 14F
→
09/16 16:06, , 15F
09/16 16:06, 15F
→
09/16 16:06, , 16F
09/16 16:06, 16F
→
09/17 08:52, , 17F
09/17 08:52, 17F
→
09/17 08:52, , 18F
09/17 08:52, 18F
→
09/17 08:53, , 19F
09/17 08:53, 19F
→
09/17 08:54, , 20F
09/17 08:54, 20F
→
09/17 08:55, , 21F
09/17 08:55, 21F
→
09/17 08:55, , 22F
09/17 08:55, 22F
→
09/17 08:56, , 23F
09/17 08:56, 23F
→
09/18 15:51, , 24F
09/18 15:51, 24F
→
09/18 15:52, , 25F
09/18 15:52, 25F
→
09/18 15:53, , 26F
09/18 15:53, 26F
→
09/18 15:54, , 27F
09/18 15:54, 27F
→
09/18 15:54, , 28F
09/18 15:54, 28F
→
09/18 15:55, , 29F
09/18 15:55, 29F
→
09/18 15:56, , 30F
09/18 15:56, 30F
→
09/18 15:57, , 31F
09/18 15:57, 31F
→
09/18 15:58, , 32F
09/18 15:58, 32F
→
09/18 16:16, , 33F
09/18 16:16, 33F
→
09/18 16:17, , 34F
09/18 16:17, 34F
→
09/18 16:24, , 35F
09/18 16:24, 35F
→
09/18 16:25, , 36F
09/18 16:25, 36F
→
09/19 10:09, , 37F
09/19 10:09, 37F
→
09/19 10:10, , 38F
09/19 10:10, 38F
→
09/20 14:25, , 39F
09/20 14:25, 39F
→
09/20 14:26, , 40F
09/20 14:26, 40F
→
09/20 14:27, , 41F
09/20 14:27, 41F
→
09/20 14:27, , 42F
09/20 14:27, 42F
→
09/20 17:53, , 43F
09/20 17:53, 43F
→
09/21 10:13, , 44F
09/21 10:13, 44F