C# 请求的协议尚未配置到系统中,或者不存在该协议的实现
以下声明C# 请求的协议尚未配置到系统中,或者不存在该协议的实现,c#,windows,sockets,networking,C#,Windows,Sockets,Networking,以下声明 var socket = new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Udp); 在我的计算机上出现以下错误 An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in System.Net.Sockets.dll The requested protocol has not been configured
var socket = new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Udp);
在我的计算机上出现以下错误
An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in System.Net.Sockets.dll
The requested protocol has not been configured into the system, or no implementation for it exists
但是,如果我将协议类型
更改为Tcp
,它会工作吗
我正在使用Windows10和VisualStudio2019
更新:
我更改了代码以初始化套接字。现在它在socket.Bind(endPoint)行中得到一个异常代码>
未处理的异常:System.Net.Sockets.SocketException:引用的对象类型不支持尝试的操作
如果AddressFamily==AddressFamily.InterNetwork=>
SocketType.Raw
ProtocolType.Tcp
支持SocketType.Stream
。我将其更改为newsocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp)
。现在它得到了一个新的异常“引用的对象类型不支持尝试的操作”Lol,这是我的错误ProtocolType.Udp
同时支持SocketType.Dgram
和SocketType.Raw
,但我想写前者。你的应用程序的上下文是什么?我正在使用UDP编写一个套接字服务器和客户端。客户端将向服务器发送一些数据并回显。使用无连接协议,您不会侦听连接。使用该方法接收任何数据报。发送。如果AddressFamily==AddressFamily.InterNetwork=>
SocketType.Raw
ProtocolType.Tcp
支持SocketType.Stream
。我将其更改为newsocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp)
。现在它得到了一个新的异常“引用的对象类型不支持尝试的操作”Lol,这是我的错误ProtocolType.Udp
同时支持SocketType.Dgram
和SocketType.Raw
,但我想写前者。你的应用程序的上下文是什么?我正在使用UDP编写一个套接字服务器和客户端。客户端将向服务器发送一些数据并回显。使用无连接协议,您不会侦听连接。使用该方法接收任何数据报。发送。
var host = Dns.GetHostName();
var ip = Dns.GetHostEntry(host).AddressList[0];
var endPoint = new IPEndPoint(ip, port);
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try
{
socket.Bind(endPoint);
socket.Listen(100);
while (true)
{
Console.WriteLine("Waiting...");
mre.Reset();
socket.BeginAccept(new AsyncCallback(AccetCallBack), socket);
mre.WaitOne();
}