winsock函數套接字期望作爲協議的第三個參數,對於套接字類型SOCK_STREAM,通常是IPROTO_TCP,對於套接字類型SOCK_DGRAM,IPROTO_UDP通常是IPROTO_TCP。當我傳遞0值作爲協議參數時,TCP和UDP按預期工作。winsock套接字函數中的協議參數是什麼?
SOCKET s = socket(AF_INET, SOCK_DGRAM, 0)
// s is a valid socket
什麼是IPROTO_IP協議參數值意味着什麼?如果它只是用於SOCK_RAW,爲什麼會有這種冗餘?
socket(AF_INET, SOCK_STREAM, IPROTO_TCP);
socket(AF_INET, SOCK_DGRAM, IPROTO_UDP);
實際上協議參數指定了什麼?當我可以使用另一個值時,它看起來不重要。
我想從帶有多個網絡卡的PC發送UDP數據包(包括廣播)到特定的以太網段。雖然IP路由通常選擇網卡(和源地址),但我想指定適配器並考慮原始套接字或任何其他方式來實現此目標。在這種情況下,IPPROTO_IP可能會有所幫助。