这几天反编译.net库,想看看Socket的封装,似乎有一个bug。
Socket类中的
public object GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName) { 。。。。。。。。。。。。。。 if ((optionLevel == SocketOptionLevel.IPv6) && ((optionName == SocketOptionName.AddMembership) || (optionName == SocketOptionName.DropMembership))) { return getIPv6MulticastOpt(optionName); }
。。。。。。。。。。。。。。。。。。 } 其中getIPv6MulticastOpt的实现为
private IPv6MulticastOption getIPv6MulticastOpt (SocketOptionName optionName) { IPv6MulticastRequest request1 = new IPv6MulticastRequest(); int num1 = IPv6MulticastRequest.Size; SocketError error1 = UnsafeNclNativeMethods.OSSOCK.getsockopt(m_Handle, SocketOptionLevel.IP, optionName, out request1, out num1); if (error1 == SocketError.SocketError) { SocketException socketException = new SocketException(); UpdateStatusAfterSocketError(socketException); if (Socket.s_LoggingEnabled) { Logging.Exception(Logging.Sockets, this, "getIPv6MulticastOpt/ufffd", socketException); } throw socketException; } return new IPv6MulticastOption(new IPAddress(request1.MulticastAddress), (long) request1.InterfaceIndex); }
|
|
SocketError
error1
=
UnsafeNclNativeMethods
.
OSSOCK
.
getsockopt
(
m_Handle
,
SocketOptionLevel
.
IP
,
optionName
,
out
request1
,
out
num1
);
这一句似乎应该用
SocketOptionLevel.IPv6
作参数才对