Socketで送信するIPパケットのTypeOfServiceを設定したいのですが、
SetSocketOptionでTypeOfServiceを設定しても、実際に送信パケットを
キャプチャしてみると反映されていません。
DontFragmentやIpTimeToLiveは反映されるのですが。
以下は実験してみたソースです。フォームにボタン1つです。
どなたか解決方法を知っている方がいらっしゃいましたら、
教えて下さい。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim s As Net.Sockets.Socket
Dim RemoteIPEndPoint As Net.IPEndPoint
Dim RemoteIPString As String = "192.168.1.2" '送信先IPアドレス
Dim RemotePortString As String = "80" '送信先ポート
Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes("abc")
RemoteIPEndPoint = New Net.IPEndPoint(Net.IPAddress.Parse(RemoteIPString.ToString), _
CInt(RemotePortString)) 'エンドポイント
s = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, _
Net.Sockets.SocketType.Dgram, Net.Sockets.ProtocolType.Udp) 'UDPソケット
s.SetSocketOption(Net.Sockets.SocketOptionLevel.IP, _
Net.Sockets.SocketOptionName.DontFragment, 1) 'DontFragmentを設定する
s.SetSocketOption(Net.Sockets.SocketOptionLevel.IP, _
Net.Sockets.SocketOptionName.TypeOfService, 160) 'TypeOfServiceを設定する
s.SetSocketOption(Net.Sockets.SocketOptionLevel.IP, _
Net.Sockets.SocketOptionName.IpTimeToLive, 255) 'IpTimeToLiveを設定する
s.SendTo(msg, 0, msg.Length, Net.Sockets.SocketFlags.None, RemoteIPEndPoint) '送信
End Sub
以上
分類:[.NET]