2009-02-23 2 views
1

Я пишу приложение для отправки данных по сети и должен знать, возможно ли установить биты типа службы (ToS) в заголовке IP-пакета. Кто-нибудь знает, поддерживается ли это C#, и если да, то как мне его реализовать?Как установить биты типа обслуживания в C#?

Я знаю, что я могу использовать тип сырых сокетов и указать свой собственный заголовок, но я бы предпочёл не делать этого, поскольку я использую только TCP, поэтому кажется, что создать цельный заголовок просто бессмысленно Я могу установить три бита, когда он может быть автоматически создан без этих битов.

Любые предложения были бы весьма полезными.

ответ

1

Не так ли? (Почти прямо из TcpClient.Client помощи)

TcpClient client = new TcpClient(); 
Socket s = client.Client; 

if (!s.Connected) 
{ 
    s.SetSocketOption(SocketOptionLevel.IP, 
        SocketOptionName.TypeOfService, 2); 
} 

Не уверен, какое значение вы хотите установить его, но это должно работать ...

+0

Спасибо, это именно то, что я ищу. Однако я не слишком уверен в ценности. Я думаю, что нужно несколько экспериментов! – 2009-02-25 10:07:08

+0

Это не работает под XP и выше, см. Http://support.microsoft.com/kb/248611. Злой SetSocketOption возвращается без каких-либо проблем, но байт TOS не установлен. – r0u1i