2011-05-16 56 views
1

套接字客戶端程序建立與服務器的連接, 寫入一些字節並等待使用(阻止)read()的響應。套接字:什麼導致read()返回EINVAL?

但是這個失敗,錯誤EINVAL(「無效參數」)。 以前撥打create()bind()connect()插座已成功完成。

我的問題

  • 有什麼不對嗎?

平臺是Linux x64。

+3

發佈您的代碼。 – 2011-05-16 14:38:18

+1

...並告訴你使用的是什麼平臺。 – Mat 2011-05-16 14:39:23

+0

的確,你需要登錄。 「EINVAL」通常表示一個不小心的錯誤(可能與錯誤的參數一樣簡單),因此無法在沒有看到代碼的情況下進行診斷。 – 2011-05-16 14:52:22

回答

1

的問題是,我通過一個1個字節的大小爲read()功能。 看來這不支持
(爲什麼?最小尺寸是多少?它必須是平臺位數的2倍)。

現在我通過8,它的工作。 謝謝大家的意見。

+1

沒有「平臺位」這樣的東西。您可能在某處發生了錯誤,並且它正常工作。您應該向我們提供代碼。 – nos 2011-05-17 14:43:36

+0

你不應該接受它作爲答案,因爲那不是以前它不工作的原因! – 2016-01-05 17:27:40

2

fd附加在 不適合閱讀的物體上;或者用O_DIRECT標誌打開文件 ,並且 或者在buf中指定的地址, 中count指定的值,或者 當前文件偏移量不適當地與 對齊。

http://www.kernel.org/doc/man-pages/online/pages/man2/read.2.html

+1

請避免鏈接到'die.net'手冊頁。他們已經過時了,但卻是谷歌搜索結果的頂部,因爲人們發現它們並將它們作爲問題的答案鏈接起來。最新的和權威的副本在'kernel.org'。 – 2011-05-16 14:50:42

相關問題