首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows 10 IoT中的IoT

windows 10 IoT中的IoT
EN

Stack Overflow用户
提问于 2019-04-05 15:36:34
回答 2查看 324关注 0票数 1

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

我已将该属性设置为true

代码语言:javascript
复制
DataSocket = new DatagramSocket();
DataSocket.Control.MulticastOnly = true;

此代码用于启动应用程序UWP:

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
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)
   {
       ... ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-10 09:57:07

来自@Michale许- MSFT的评论

@Nicolón,我在MSDN论坛上就类似的问题给出了一个答复。

票数 0
EN

Stack Overflow用户

发布于 2019-04-08 03:07:21

首先,您需要检查是否添加了功能专用网络(客户机和服务器),此功能通过防火墙提供对家庭和工作网络的入站和出站访问。请参阅本文件(在这里输入链接描述)。

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

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55538974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档