SocketException:请求的地址在上下文中无效
SocketException: The requested address is not valid in the context
我可以使用相同的 IP 地址与 socketTest 通信,但在 UNITY 中我收到一条错误消息
SocketException: The requested address is not valid in the context.
我试过了
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Parse(sHostIpAddress), nPort));
sHostIpAddress
是 不是 127.0.0.1
我该如何解决?
这并不是 Unity
所特有的,而是 c#
的一般情况。
Socket.Bind
用于将套接字绑定到特定的 local 端点!例如,您想将套接字限制为特定的本地网络适配器/地址(默认情况下它将使用 any/all)或特定的本地端口(默认情况下它将选择任何可用的本地端口)
Use the Bind
method if you need to use a specific local endpoint. You must call Bind
before you can call the Listen
method. You do not need to call Bind
before using the Connect
method unless you need to use a specific local endpoint.
通常您使用 Bind
主要用于服务器端侦听和等待传入连接或无连接协议,如 UDP
。
您很可能只是想使用 Socket.Connect
来建立与 远程 服务器的连接。
在不使用 Bind
的情况下使用 Connect
时,它将简单地选择它认为最适合到达给定主机地址的网络适配器/地址,并选择下一个可用的本地端口。
但是,一般来说,我建议宁愿使用 TcpClient
而不是“手动”编写和配置 Socket
(除非用例需要它)。
var tcpClient = new TcpClient(sHostIpAddress, nPort);
此构造函数将自动开始连接尝试。 TcpClient
是一个 IDisposable
并在处理时清理底层套接字、流等。它也(在我看来)更容易配置和发送和接收数据。
我可以使用相同的 IP 地址与 socketTest 通信,但在 UNITY 中我收到一条错误消息
SocketException: The requested address is not valid in the context.
我试过了
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Parse(sHostIpAddress), nPort));
sHostIpAddress
是 不是 127.0.0.1
我该如何解决?
这并不是 Unity
所特有的,而是 c#
的一般情况。
Socket.Bind
用于将套接字绑定到特定的 local 端点!例如,您想将套接字限制为特定的本地网络适配器/地址(默认情况下它将使用 any/all)或特定的本地端口(默认情况下它将选择任何可用的本地端口)
Use the
Bind
method if you need to use a specific local endpoint. You must callBind
before you can call theListen
method. You do not need to callBind
before using theConnect
method unless you need to use a specific local endpoint.
通常您使用 Bind
主要用于服务器端侦听和等待传入连接或无连接协议,如 UDP
。
您很可能只是想使用 Socket.Connect
来建立与 远程 服务器的连接。
在不使用 Bind
的情况下使用 Connect
时,它将简单地选择它认为最适合到达给定主机地址的网络适配器/地址,并选择下一个可用的本地端口。
但是,一般来说,我建议宁愿使用 TcpClient
而不是“手动”编写和配置 Socket
(除非用例需要它)。
var tcpClient = new TcpClient(sHostIpAddress, nPort);
此构造函数将自动开始连接尝试。 TcpClient
是一个 IDisposable
并在处理时清理底层套接字、流等。它也(在我看来)更容易配置和发送和接收数据。