![](/img/trans.png)
[英]How to establish a socket connection between a Play 2 server and a C# application?
[英]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所說的,問題出在監聽上,您應該改用receivefrom:
這是一個如何使用良好的udp套接字連接的示例: https : //gist.github.com/darkguy2008/413a6fea3a5b4e67e5e0d96f750088a9
如果調試代碼,則可以看到該問題發生在套接字中。Listen(10); 呼叫。 基本上,您不應該將偵聽與UDP連接一起使用。 您可以改用RecieveFrom函數。
請參閱https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.socket?view=netframework-4.7.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.