[英]Specify packet size with Ruby TCPSocket
我正在使用Ruby測試使用套接字的C#網絡應用程序。 我用@socket = TCPSocket.new(IP,PORT)
打開連接,它可以正常工作-直到我要發送的文本超過1024個字符為止。 然后,Ruby將消息分為兩部分。 C ++和C#將消息作為一個數據包發送,因此C#應用程序不需要加入這些部分。
消息永遠不會超過大約。 2000個字符。 是否可以設置TCPSocket的數據包大小?
編輯:您的所有答案都是正確的,但是在閱讀了很多關於此處的紅寶石套接字問題后,我找到了解決方案:
socket.send(msg,0x4)
不拆分消息。 直接發送的選項有所不同。
我不知道這是否可以在Internet上使用,但可以在我的測試實驗室中使用。
謝謝。
實際上,傳輸數據所需的數據包數量對流的影響很小。 您可能遇到的是實現中的緩沖問題。
僅當套接字處於“可寫”狀態時,才應寫入套接字,否則可能會導致輸出緩沖區溢出並導致網絡堆棧斷開連接的風險。
由於TCP / IP套接字的作用就像一個簡單的流,數據按順序傳入和傳出,因此,數據包分段的影響應該幾乎不相關,除了對時間非常敏感的應用程序外。
寫入套接字時,請確保刷新輸出緩沖區,否則可能還有一些數據等待發送:
@socket.write(my_data)
@socket.flush
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.