簡體   English   中英

Windows中的原始套接字實現?

[英]Raw socket implementation in windows?

我需要為我的應用程序手動創建TCP / IP標頭。 為此,我使用Raw套接字。 我的系統os是win xp(SP3)。

我的代碼編譯很好:)但它會引發運行時錯誤:

Initialising Winsock...Initialised successfully. Creating Raw TCP Socket...Raw TCP Socket Created successfully. Setting the socket in RAW mode...Successful. Enter hostname : 192.168.1.152

Resolving Hostname...Resolved. Enter Source IP : 192.168.1.151

Sending packet... Error sending Packet : 10022

我已將IP_HDRINCL設置為1.我做錯了什么? 我也關閉了防火牆,但仍然得到了相同的結果。

Microsoft限制了RAWSockets,但只使用WinPcap http://www.winpcap.org/ 有了這個,你可以發送所有類型的數據包。

不是答案,但希望一開始......

來自MSDN

WSAEINVAL 10022參數無效。 提供了一些無效參數(例如,為setsockopt函數指定了無效級別)。 在某些情況下,它還引用套接字的當前狀態 - 例如,在未偵聽的套接字上調用accept。

您的發送電話有哪些參數?


我在原始套接字上發現了這個更新:

在帶有Service Pack 2(SP2)和Windows Vista的Windows XP上,通過原始套接字發送流量的能力受到以下幾種限制:

  • TCP數據無法通過原始套接字發送。

不確定這是否適用於XP SP3雖然......

我建議使用WinPcap來達到這個目的。 即使你弄清楚如何使用win32 API正確地執行此操作,它也會非常慢。

我已成功使用WinPcap將數據包注入千兆以太網端口,速度與硬件可以處理的速度一樣快。

暫無
暫無

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

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