Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 什么';插座的实际用途是什么?_.net_Sockets_Binding - Fatal编程技术网

.net 什么';插座的实际用途是什么?

.net 什么';插座的实际用途是什么?,.net,sockets,binding,.net,Sockets,Binding,最近我一直在.NET中使用套接字,我想知道Socket.exclusiveReadDressUse的实际用途是什么。我已经读过了,所以我知道了基本的想法(强制特定的IP地址/端口组合只允许一个套接字绑定到它),但是我对该属性的实际用途有点困惑 文档说明当exclusiveeaddressuse为false时: 如果多个套接字尝试使用Bind(EndPoint)方法绑定到特定端口,则具有更特定IP地址的套接字将处理发送到该端口的网络流量 一个IPEndPoint(我能找到的EndPoint唯一具体

最近我一直在.NET中使用套接字,我想知道
Socket.exclusiveReadDressUse
的实际用途是什么。我已经读过了,所以我知道了基本的想法(强制特定的IP地址/端口组合只允许一个套接字绑定到它),但是我对该属性的实际用途有点困惑

文档说明当
exclusiveeaddressuse
为false时:

如果多个套接字尝试使用
Bind(EndPoint)
方法绑定到特定端口,则具有更特定IP地址的套接字将处理发送到该端口的网络流量


一个
IPEndPoint
(我能找到的
EndPoint
唯一具体的子类)比另一个更具体?您将如何以及为什么在应用程序中使用此行为?为什么在XP之后而不是之前的Windows版本中,此行为是默认行为?

例如,如果您有:

var endPoint = new IPEndPoint(IPAddress.IPv6Any, 800);
using (var socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
{
    socket.Bind(endPoint);
    socket.Listen(int.MaxValue);
    socket.AcceptAsync(new SocketAsyncEventArgs().Completed += ...);
}
您将开始侦听端口800上所有IPv6地址的所有传入连接。现在,如果在同一端口上创建另一个具有确切IP的套接字,则新套接字将优先并开始侦听端口800上的确切IP。这对于较小的场景集非常有用(例如,对于使用安全通道读取/写入精确IP的瞬态连接)