none
如何使用Socket.SetSocketOption 方法 RRS feed

  • 問題

  • UDP能夠同一時間接收不同CLIENT 端資料

    S = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    S.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.ReceiveBuffer, 1000);

    出現10022:提供不正確引數 請問我要追加什麼程式

    我發現他也跟我同樣問題,但是他是一對多傳送給CLIENT

    http://social.msdn.microsoft.com/forums/zh-tw/232/thread/85F76962-FF69-4B85-9558-886CB08242AC

    2010年11月11日 上午 05:01

解答

  • 1. 要Set ReceiveBuffer , 可直接用Socket.ReceiveBufferSize 屬性

    2. 你會出現錯誤的原因在於 SocketOptionName.ReceiveBuffer 是Socket Level而不是Udp Level的參數

    要改成 S.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, 1000);

    我在你所列的那篇文章就有說明這個列舉值搭配的問題.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 丫丫 2010年11月11日 上午 07:25
    2010年11月11日 上午 05:28
    版主

所有回覆

  • 1. 要Set ReceiveBuffer , 可直接用Socket.ReceiveBufferSize 屬性

    2. 你會出現錯誤的原因在於 SocketOptionName.ReceiveBuffer 是Socket Level而不是Udp Level的參數

    要改成 S.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, 1000);

    我在你所列的那篇文章就有說明這個列舉值搭配的問題.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 丫丫 2010年11月11日 上午 07:25
    2010年11月11日 上午 05:28
    版主
  • run ok,不過我想請教Bill 大哥:

    ReceiveBuffer     指定保留給接收的每一通訊端緩衝區總空間。
                                    這與最大訊息大小或 TCP 視窗大小無關。

    第二句話我不了解可以解說一下嗎?

    抱歉沒有看到 http://msdn.microsoft.com/zh-tw/library/1011kecd%28VS.80%29.aspx

    可以使用這個多載加以設定的 SocketOptionLevel.Socket 選項。

    可以使用這個多載加以設定的 SocketOptionLevel.IP 選項。

    可以使用這個多載加以設定的 SocketOptionLevel.Tcp 選項。

    可以使用這個多載加以設定的 SocketOptionLevel.Udp 選項。

    可以使用這個多載加以設定的 SocketOptionLevel.IPv6 選項。

    2010年11月11日 上午 07:07
  • 1. 假使你Buffer 為8192, 不代表你只能傳送或收取8192 bytes 的資料.

    2. TCP Receive Window Size and Window Scaling


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月11日 上午 07:52
    版主
  • Buffer 最佳大小,要依據你處理網路封包的時間密度及網路速度來訂定。

    你傳送量大於 Buffer 也只是慢慢排隊而已。

    但通常網路速度遠低於 CPU 處理能力,大部分沒機會排隊。

    要是要用在內部網路 Gigabits 的速度,Buffer 才需要調大來確保效能最佳化。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年11月11日 下午 03:50