日期:2014-05-17  浏览次数:21300 次

c#中的原始套接字(rawsocket)问题
win7下,csharp中
new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1); 
byte []IN = new byte[4]{1, 0, 0, 0}; 
byte []OUT = new byte[4];
socket.IOControl(IOControlCode.ReceiveAll, IN, OUT);
这样方式创建的原始套接字,只能收到有本机发出的TPC,UDP数据包,目的地为本机的数据包全收不到,另外,对rawsocket有点不解,这个不是工作在IP层上的东西么?为什么还要使用bind方法?能自己写TCP和IP报文,用bind方法有意义么?不大懂,求高手解答,最好能稍微详细一点的解释一下rawsocket的原理,万谢!
C# socket

------解决方案--------------------
只能收到发出的,而收不到到达的包,首先检查下防火墙。