得到本机socket选项的全部默认值。

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

 最近写一些在网络上捕获数据包的程序,用到了Rawsocket,其中要用到SetsocketOption()原型为:SetsocketOption(socketOptionLevel.IP,socketOptionName.HeaderIncluded, 1);第三个参数为什么要是 1 呢?原因是默认的值是 0 ,1表示打开这个选项。那么还有多少这样的选项呢?答案是:很多,有200项左右。于是有了下面的代码,它可以看一看你使用socket时每个option的默认值。知道了这些,你就可以有的放矢的SetsocketOption()了。

Code:

---------------------------------------------------------------------------

namespace SKY.socketOptions{ using System; using System.Net.sockets; public class socketOptions {  public static void Main(string[] args)  {   int count = 0;    //使用那种构造函数并不重要,何值也不重要,无非是CLR分配一些相关的结构   //结构是重要的   socket socket = new socket(AddressFamily.InterNetwork, socketType.Raw, ProtocolType.IP);              Type sol = typeof(socketOptionLevel);   Type son = typeof(socketOptionName);   Console.WriteLine(" num Level Name DefaultOption");   Console.WriteLine("----------------------------------------------------------------");      foreach(string s1 in Enum.GetNames(sol))   {    foreach( string s2 in Enum.GetNames(son))    {     count++;    try    {     socketOptionLevel o1 = (socketOptionLevel)Enum.Parse(sol,s1);     socketOptionName o2 = (socketOptionName)Enum.Parse(son,s2);     Console.Write(" {0} {1:-10} {2:-30}",count,s1,s2);     //Get Values     Console.Write(" {0}",socket.GetsocketOption(o1,o2));    }    catch(ArgumentNullException)    {     Console.Write(" NULL");    }    catch(ArgumentException)    {     Console.Write(" NULL");    }    catch(socketException)    {     Console.Write(" NULL");    }   }

   }   Console.WriteLine("----------------------------------------------------------------");   /*   Console.WriteLine("-------------socketOptionLevel---------------------------");   foreach ( string s1 in Enum.GetNames(sol))   {   Console.WriteLine( "{0}",s1);   }   Console.WriteLine("-------------socketOptionName----------------------------");   foreach( string s2 in Enum.GetNames(son))   {   Console.WriteLine( "|{0}",s2);   }   Console.WriteLine("------------------END------------------------------------");   */   Console.ReadLine();  } }}

---------------------------------------------------下面是屏幕截图:

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值