Почему .Net Socket.Disconnect занимает две минуты?

Я использую класс сокетов .Net, и я использую следующий код:

socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(true);

Затем он блокируется ровно на две минуты. Я указал истину, потому что я собираюсь сразу же повторно использовать сокет и повторно установить соединение. Независимо от того, есть ли у меня вызов Shutdown или нет, он блокируется на две минуты. Единственное, что я могу сделать, это передать false для отключения. Но я хочу повторно использовать сокет.

Есть идеи?

ОБНОВЛЕНИЕ:

Я прочитал коды. Я установил опцию DontLinger. Это не помогает.

ОБНОВЛЕНИЕ 2:

Я добавил сетевую трассировку согласно запросу:

Трассировка 1: Использование опции DontLinger

System.Net.Sockets Verbose: 0 : [4668] Socket#5009246::Socket(InterNetwork#2)
System.Net.Sockets Verbose: 0 : [4668] Exiting Socket#5009246::Socket() 
System.Net.Sockets Verbose: 0 : [4668] Socket#5009246::Connect(eee:nnnn#-2063562120)
System.Net.Sockets Information: 0 : [4668] Socket#5009246 - Created connection from aaa.bbb.ccc.ddd.eee:nnnnn to www.xxx.yyy.zzz.:mmmm.
System.Net.Sockets Verbose: 0 : [4668] Exiting Socket#5009246::Connect() 
System.Net.Sockets Verbose: 0 : [4668] Socket#5009246::Disconnect()
System.Net.Sockets Verbose: 0 : [4668] Exiting Socket#5009246::Disconnect() 

Трассировка 2: Использование выключения (SocketShutdown.Both);

System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Socket(InterNetwork#2)
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Socket() 
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Connect(ddd:eeeee#-2063562120)
System.Net.Sockets Information: 0 : [0300] Socket#5009246 - Created connection from aaa.bbb.ccc.ddd:eeee to www.xxx.yyyy.zzzz:nnnnn.
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Connect() 
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Shutdown(Both#2)
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Shutdown() 
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Disconnect()
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Disconnect() 
8
задан uriDium 3 December 2010 в 14:26
поделиться