在Windows 10 IoT中拒绝连接

问题描述 投票:1回答:2

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

我已将该属性设置为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);
}
public void Run(IPAddress iPAddress, string dns, string subnetMask, string serverIdentifier, string routerIP)
{
  var server = new Dhcp(iPAddress);
  server.ServerName = dns;
  server.BroadcastAddress = IPAddress.Broadcast.ToString();
  server.OnDataReceived += (sender, dhcpRequest) =>
  {
    try
    {
      var type = dhcpRequest.GetMsgType();
      var ip = iPAddress;
      var replyOptions = new DhcpReplyOptions();
      replyOptions.SubnetMask = IPAddress.Parse(subnetMask);
      replyOptions.DomainName = server.ServerName;
      replyOptions.ServerIdentifier = IPAddress.Parse(serverIdentifier);
      replyOptions.RouterIP = IPAddress.Parse(routerIP);
      replyOptions.DomainNameServers = new IPAddress[]
      {IPAddress.Parse("8.8.8.8"), IPAddress.Parse("8.8.4.4")};

      if (type == DhcpMsgType.DHCPDISCOVER)
      {
        dhcpRequest.SendDHCPReply(DhcpMsgType.DHCPOFFER, ip, replyOptions);
      }
      if (type == DhcpMsgType.DHCPREQUEST)
      {
        dhcpRequest.SendDHCPReply(DhcpMsgType.DHCPACK, ip, replyOptions);
      }
    }
    catch (Exception e)
    { }
 };
 server.Start();
}

... ...

public async void StartServer()
{
  try
  {
    var streamSocketListener = new StreamSocketListener();

    streamSocketListener.ConnectionReceived += this.StreamSocketListener_ConnectionReceived;

    await streamSocketListener.BindServiceNameAsync(PORT.ToString());
   }
   catch (Exception ex)
   {
       ... ...
c# tcp uwp windows-10-iot-core dhcp
2个回答
0
投票

首先,您需要检查是否添加了Private Networks (Client & Server)功能,此功能通过防火墙提供对家庭和工作网络的入站和出站访问。请参阅此文件(enter link description here)。

然后,您需要检查端口是否可用,您可以在防火墙中添加端口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

0
投票

来自@Michale Xu的评论 - MSFT

@Nicolò,我已就MSDN forum对类似问题做出回应。

© www.soinside.com 2019 - 2024. All rights reserved.