c#如何建立UDP套接字连接
c# How to establish UDP socket connection
未处理的异常:System.Net.Sockets.SocketException:引用的对象类型不支持尝试的操作
我已经尝试将 ip 映射到 V6 相同的异常
namespace ConsoleApp1
{
using System.Net;
using System.Net.Sockets;
using static Tools;
class Program
{
static void Main(string[] args)
{
Send("Hello from Server");
Socket socket = new Socket(GetRemote().AddressFamily, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(GetRemote());
socket.Listen(10);
}
}
static class Tools
{
private static readonly EndPoint _REMOTE = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 11039);
public static void Send(string message)
{
Console.Out.Write(message + Console.Out.NewLine);
}
public static EndPoint GetRemote()
{
return _REMOTE;
}
}
}
将您的套接字定义更改为:
Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
编辑:
根据@gpro 所说,问题出在 listen 上,您应该改用 receivefrom:
这里是一个如何使用良好的 udp 套接字连接的例子:
https://gist.github.com/darkguy2008/413a6fea3a5b4e67e5e0d96f750088a9
如果您调试代码,您会发现问题出现在 socket.Listen(10);称呼。基本上你不应该使用 Listen 与 UDP 连接。
您可以改用 RecieveFrom 函数。
见https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.socket?view=netframework-4.7.2
未处理的异常:System.Net.Sockets.SocketException:引用的对象类型不支持尝试的操作
我已经尝试将 ip 映射到 V6 相同的异常
namespace ConsoleApp1
{
using System.Net;
using System.Net.Sockets;
using static Tools;
class Program
{
static void Main(string[] args)
{
Send("Hello from Server");
Socket socket = new Socket(GetRemote().AddressFamily, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(GetRemote());
socket.Listen(10);
}
}
static class Tools
{
private static readonly EndPoint _REMOTE = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 11039);
public static void Send(string message)
{
Console.Out.Write(message + Console.Out.NewLine);
}
public static EndPoint GetRemote()
{
return _REMOTE;
}
}
}
将您的套接字定义更改为:
Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
编辑:
根据@gpro 所说,问题出在 listen 上,您应该改用 receivefrom:
这里是一个如何使用良好的 udp 套接字连接的例子: https://gist.github.com/darkguy2008/413a6fea3a5b4e67e5e0d96f750088a9
如果您调试代码,您会发现问题出现在 socket.Listen(10);称呼。基本上你不应该使用 Listen 与 UDP 连接。 您可以改用 RecieveFrom 函数。
见https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.socket?view=netframework-4.7.2