C# windows 10 IoT中的连接被拒绝

C# windows 10 IoT中的连接被拒绝,c#,tcp,uwp,windows-10-iot-core,dhcp,C#,Tcp,Uwp,Windows 10 Iot Core,Dhcp,我创建了一个DHCP服务器,并添加了一个TCP服务器。当我在DHCP服务器的IPv4地址发送消息时,客户端会回答:connectionseeded 我已将属性设置为true DataSocket = new DatagramSocket(); DataSocket.Control.MulticastOnly = true; 运行此代码以启动应用程序UWP: private void Start() { if (this.StatusButton.Content.ToString().Equ

我创建了一个DHCP服务器,并添加了一个TCP服务器。当我在DHCP服务器的IPv4地址发送消息时,客户端会回答:
connectionseeded

我已将属性设置为true

DataSocket = new DatagramSocket();
DataSocket.Control.MulticastOnly = true;
运行此代码以启动应用程序UWP:

private void Start()
{
  if (this.StatusButton.Content.ToString().Equals(AVVIA))
  {
    this.ViewModel.Action = "AVVIO DEL SERVER DHCP IN CORSO...";
    RunServer();
    this.StatusButton.Content = UPDATE;
    Task.Run(async () => 
    {
      await Task.Delay(DELAY);
      Server = new Server();
      Server.StartServer();
     });
  }

  ... ... ...

private void RunServer()
{
  IPAddress iPAddress;

  DhcpServer = new ScaemDhcp.DhcpServer();
  iPAddress = new IPAddress(new byte[] { 192, 168, 1, 101 });
  DhcpServer.Run(iPAddress, DNS, SUB_MASK, SERVER_IDENTIFIER, ROUTER_IP);
}

首先,您需要检查是否添加了该功能,该功能通过防火墙提供对家庭和工作网络的入站和出站访问。请参阅本文档()

然后,您需要检查端口是否可用,您可以在防火墙中添加端口5037的规则,请使用以下命令尝试

netsh advfirewall firewall add rule name="5037 In" dir=in protocol=TCP localport=5037 action=Allow
netsh advfirewall firewall add rule name="5037 Out" dir=out protocol=TCP localport=5037 action=Allow

首先,您需要检查是否添加了该功能,该功能通过防火墙提供对家庭和工作网络的入站和出站访问。请参阅本文档()

然后,您需要检查端口是否可用,您可以在防火墙中添加端口5037的规则,请使用以下命令尝试

netsh advfirewall firewall add rule name="5037 In" dir=in protocol=TCP localport=5037 action=Allow
netsh advfirewall firewall add rule name="5037 Out" dir=out protocol=TCP localport=5037 action=Allow
来自@Michale Xu-MSFT的评论

@Nicolò,我已经就类似的问题做出了回应

来自@Michale Xu-MSFT的评论


@Nicolò,我已经就类似的问题给出了回复。

TCP不支持多播。多播只是UDP。我已添加此支持(多播)以测试所有可能的解决方案(我处于绝望模式)…多播是广播的,您无法连接。多播仅适用于IP 224.X.X.X到239.X.X.X。您可以将UDP广播用于多播和非多播。DCHP使用的端口67和68可能已被病毒检查器或防火墙阻止。请参阅Wiki:我已经删除了多播,结果是DHCP服务器工作正常,但Win 10 IoT中的TCP服务器根本不工作。我已通过以太网将Raspberry(Win 10 IoT)与我的电脑连接。结果是:PC需要并获得IPv4、GW等。。。如DHCP服务器中设置的。然后我(在PC机上)运行一个客户端TCP,向我的Raspberry(Win 10 IoT)发送一条消息,这里我在执行一个TCP服务器。客户端的结果是:ConnectionRejected.DCHP是UDP广播。IP:source=0.0.0.0(服务器);目的地=255.255.255.255(广播IP)UDP:源端口=68;目标端口=67TCP不支持多播。多播只是UDP。我已添加此支持(多播)以测试所有可能的解决方案(我处于绝望模式)…多播是广播的,您无法连接。多播仅适用于IP 224.X.X.X到239.X.X.X。您可以将UDP广播用于多播和非多播。DCHP使用的端口67和68可能已被病毒检查器或防火墙阻止。请参阅Wiki:我已经删除了多播,结果是DHCP服务器工作正常,但Win 10 IoT中的TCP服务器根本不工作。我已通过以太网将Raspberry(Win 10 IoT)与我的电脑连接。结果是:PC需要并获得IPv4、GW等。。。如DHCP服务器中设置的。然后我(在PC机上)运行一个客户端TCP,向我的Raspberry(Win 10 IoT)发送一条消息,这里我在执行一个TCP服务器。客户端的结果是:ConnectionRejected.DCHP是UDP广播。IP:source=0.0.0.0(服务器);目的地=255.255.255.255(广播IP)UDP:源端口=68;我没有好消息。我开始怀疑在PC上运行的客户机。将部分代码放置为:
await streamSocket.ConnectAsync(“192.168.1.101”、“5037”)@Nicolò,你提到过这个吗?本主题介绍如何使用通用Windows平台(UWP)套接字类来创建服务器和客户端。是的,我已经提到了这一点,但只有客户端TCP在我的电脑中执行。@Nicolò,我想与您确认一些事情。1.您是否使用ping命令检查网络是否正常,是否可以从PC上的客户端访问设备?2.当客户端连接到服务器时,是否引发了一些异常,请提供错误信息。您可以尝试使用其他套接字测试工具连接服务器/端口。如果可能,请共享您的项目,以便我重现您的问题。请尝试在Windows IoT Core上运行命令
netsh advfirewall firewall show rule name=all
,以确认端口5073的规则已配置。我没有好消息。我开始怀疑在PC上运行的客户机。将部分代码放置为:
await streamSocket.ConnectAsync(“192.168.1.101”、“5037”)@Nicolò,你提到过这个吗?本主题介绍如何使用通用Windows平台(UWP)套接字类来创建服务器和客户端。是的,我已经提到了这一点,但只有客户端TCP在我的电脑中执行。@Nicolò,我想与您确认一些事情。1.您是否使用ping命令检查网络是否正常,是否可以从PC上的客户端访问设备?2.当客户端连接到服务器时,是否引发了一些异常,请提供错误信息。您可以尝试使用其他套接字测试工具连接服务器/端口。如果可能,请共享您的项目,以便我重现您的问题。请尝试在Windows IoT Core上运行命令
netsh advfirewall firewall show rule name=all
,以确认端口5073的规则已配置。