gpt4 book ai didi

c# - FEZ Spider 套件上的 WSAENETDOWN SocketException

转载 作者:行者123 更新时间:2023-12-03 12:00:23 25 4
gpt4 key购买 nike

我正在尝试在 .NETMF 4.3 中为我的 FEZ Spider 套件编写 TCP 服务器。

public partial class Program
{
void ProgramStarted()
{
ethernetJ11D.NetworkInterface.Open();
ethernetJ11D.UseStaticIP("192.168.0.8", "255.255.255.0", "192.168.0.1");
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
EndPoint endPoint = new IPEndPoint(IPAddress.Any, 7777);
serverSocket.Bind(endPoint);
serverSocket.Listen(10);

new Thread(() =>
{
while (true)
{
Debug.Print("Network up: " + ethernetJ11D.IsNetworkUp);//true
Debug.Print("Network connected: " + ethernetJ11D.IsNetworkConnected);//true
System.Net.Sockets.Socket clientSocket = serverSocket.Accept();//exception!
new Thread(new Request(clientSocket).Process);
}
}).Start();
}

serverSocket.Accept 方法抛出 SocketException,错误代码为 10050。 This页面显示它是 WSAENETDOWN:网络已关闭。但是 ethernetJ11D 的属性表明连接已启动,我可以毫无问题地 ping 设备。我究竟做错了什么?

编辑

当我尝试运行以下客户端时,我在 socket.Connect 调用中遇到了同样的异常。
ethernetJ11D.NetworkInterface.Open();
ethernetJ11D.UseStaticIP("192.168.0.8", "255.255.255.0", "192.168.0.1");
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("192.168.0.5"), 7777);
socket.Connect(endpoint);

Debug.Print("connected");
byte[] msg = new byte[] { 7, 77, 222 };
socket.Send(msg);

编辑 2

我尝试改为实现 UDP 客户端。它也不起作用。

最佳答案

我已经解决了这个问题:

  • 更改IPAddress.Any到静态 IP,例如IPAddress.Parse("192.168.0.8") .
  • 通过添加 Thread.Sleep(3000) 延迟绑定(bind)就在它之前。似乎接口(interface)的网络设置配置需要一些时间。
  • 关于c# - FEZ Spider 套件上的 WSAENETDOWN SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28192086/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com