[問題] socket 再使用UDP recvfrom(...)時的回傳值?

看板C_and_CPP (C/C++)作者 (homestay)時間16年前 (2010/04/05 01:37), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
遇到的問題:目前在練習使用UDP作broadcast,但是現在發現一個怪問題 就是之前在TCP接收時,read()得回傳值有兩種,大於零代表接收的位元數,-1代表錯誤 也就是說i=0時結束傳輸.所以是使用for來多次分別讀取到i==0為止,但是現在書上的 範例在UDP broadcast沒有用for來連續讀取(用recvfrom),起初以為是傳輸量很小, 所以讀一次就可以讀完,但是得到的回傳值int i=recvfrom(......); 變成說是檔案讀到了,i值卻是-1 ??? 是說這兩函數回傳值的意義不同,還是說讀到結束直到錯誤回傳-1是正常的? 以下範例: 我只用一行讀取 int i=recvfrom(XXXXX,XXX,XXX....); 印出來讀取到的是正確的,但是i的值是-1 希望得到的正確結果:是否i值是在這函數中持續變動,讀取到變成-1才結束此行? 所以最後讀到檔案尾的回傳值必定是-1嗎? 程式跑出來的錯誤結果:有傳輸成功~ 開發平台:g++ Linux 有問題的code:打在上面了= = 只有一行 補充說明:感謝大家 練習遇到的問題想不透~ 希望能得到答案XD 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.0.87

04/05 02:46, , 1F
04/05 02:46, 1F

04/05 10:40, , 2F
感謝= = 問題似乎就是出在最後一個參數沒給初始值
04/05 10:40, 2F
文章代碼(AID): #1BkCvVqc (C_and_CPP)
文章代碼(AID): #1BkCvVqc (C_and_CPP)