C# windows 10 IoT中的连接被拒绝
我创建了一个DHCP服务器,并添加了一个TCP服务器。当我在DHCP服务器的IPv4地址发送消息时,客户端会回答: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
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的规则已配置。