[問題 ] recvfrom不會block
開發平台(Platform): (Ex: Win10, Linux, ...)
Ubuntu
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
No
問題(Question):
經過我測試,client的sendto()沒問題會正常送出 但問題就是我的Server端的
if((recvfrom(clientfd,buffer,bufferlen,0,(struct sockaddr*)&client,&size)==-1)
{
printf ("ERROR: Obtain new Socket Despcritor error.\n");
}
照理來說 這邊if應該要等client端的sendto()再往下繼續執行 可是我只要執行./server
會直接執行printf ("ERROR: Obtain new Socket Despcritor error.\n");這行
看起來像是recvfrom 沒有block
也有google過 找其他UDP範例 也是一樣的寫法 。
餵入的資料(Input):
client端輸入 server端的ip port
預期的正確結果(Expected Output):
Server端等待client連線後傳送一文字檔(.txt)給client
Client收到文字檔
錯誤結果(Wrong Output):
Server端在recvfrom 沒有block
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
補充說明(Supplement):
我自己有寫另一個tcp版本可以正常運作
換成UDP跟UDP的function 不知為何無法正常運作
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.35.244
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1528022221.A.00C.html
※ 編輯: achicn3 (110.28.35.244), 06/03/2018 18:41:12
推
06/03 19:16,
7年前
, 1F
06/03 19:16, 1F
怎麼惹
※ 編輯: achicn3 (27.52.160.35), 06/03/2018 19:21:28
→
06/03 19:27,
7年前
, 2F
06/03 19:27, 2F
是嗎?! 我想法是讀到那行if後 server 會hangs在那邊等待連線 像是這張照片所說
https://i.imgur.com/R0zhRnY.jpg

※ 編輯: achicn3 (112.105.209.105), 06/03/2018 19:51:17
→
06/03 20:32,
7年前
, 3F
06/03 20:32, 3F
→
06/03 23:25,
7年前
, 4F
06/03 23:25, 4F
→
06/03 23:26,
7年前
, 5F
06/03 23:26, 5F
→
06/04 00:07,
7年前
, 6F
06/04 00:07, 6F
→
06/04 00:09,
7年前
, 7F
06/04 00:09, 7F
→
06/04 00:09,
7年前
, 8F
06/04 00:09, 8F
推
06/04 00:12,
7年前
, 9F
06/04 00:12, 9F
感謝各位的回覆
目前可以block了但是結果我接收不到任何東西 囧
※ 編輯: achicn3 (27.52.160.35), 06/04/2018 01:44:04
→
06/04 02:04,
7年前
, 10F
06/04 02:04, 10F
QQ
→
06/04 09:08,
7年前
, 11F
06/04 09:08, 11F
推
06/04 10:07,
7年前
, 12F
06/04 10:07, 12F
感謝各位
※ 編輯: achicn3 (27.52.160.35), 06/04/2018 19:11:04
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章