簡體   English   中英

從未綁定的 UDP 套接字發送

[英]Sendto from unbinded UDP socket

情況:我需要從某個空閑端口使用UDP從客戶端進行廣播,然后從具有相同編號但TCP的端口上的服務器接受客戶端上的tcp連接。 這就是為什么我需要在廣播之前監聽(並綁定)到這個端口。 端口不能是常量,因為我可以在一台機器上運行多個客戶端。 所以這里有一些問題,可以幫助我更清楚地說明這種情況:

  1. 如果我從未綁定的 UDP 套接字進行發送,它是否綁定到任何空閑端口並且所有下一個發送消息都將從該端口發送,或者每次都會為新消息選擇該端口?

  2. 我可以要求系統為我保留一些空閑端口嗎? (我需要為 UDP 和 TCP 連接保留兩個具有相同編號的端口)

  3. 我確定有一種已知的方法來處理這些情況,它是什么?

1)如果我從未綁定的UDP套接字發送sendto,它是否綁定到任何空閑端口並且所有下一個sendto消息都將從該端口發送

是的。

或者每次都會為新消息選擇端口?

不。

2) 我可以要求系統為我預留一些空閑端口嗎? (我需要為 UDP 和 TCP 連接保留兩個具有相同編號的端口)

這就是自動綁定發生時發生的情況。 您可以通過綁定到端口號零來顯式執行此操作,但這不是必需的。 它也不保證您可以將 UDP 和 TCP 綁定到相同的端口號。

3)我確定有一種已知的方法來處理這些情況,它是什么?

你已經找到了。 讓自動綁定發生。

我在 stackoverflow 上找到了一些答案

  1. 您可以綁定到0端口,即指定它struct semaddr_in 這將允許您為您的連接類型獲得一個未使用的端口。 它沒有被定義為對其他類型的連接免費。

綁定到任何可用端口時查看@remy 的回答

  1. 是的,它們可以,因為標頭是為 UDP 或 TCP 協議指定的。 所以機器可以分辨一個人。

請參閱TCP 和 UDP 套接字是否可以使用相同的端口?

  1. 如果您綁定到 0 端口,您將能夠在調用sendto之前listen

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM