【问题标题】:Code running in console application but not windows universal app在控制台应用程序而不是 Windows 通用应用程序中运行的代码
【发布时间】:2016-02-25 09:16:43
【问题描述】:

我在控制台应用中有这段代码:

using System.Text;
using System.Diagnostics;
using System.Net.Sockets;
using System.Net;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] data = ASCIIEncoding.ASCII.GetBytes("test message");
            string IP = "192.168.1.22";
            int Port = 2390;
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(IP), Port);
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
            socketEventArg.RemoteEndPoint = endPoint;
            socketEventArg.SetBuffer(data, 0, data.Length);
            client.SendToAsync(socketEventArg);
            Debug.WriteLine("sent");
        }
    }
}

Windows 通用应用程序中的这段代码:

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System.Net;
using System.Net.Sockets;
using System.Diagnostics;
using System.Text;

namespace App6
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            byte[] data = ASCIIEncoding.ASCII.GetBytes("test message");
            string IP = "192.168.1.22";
            int Port = 2390;
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(IP), Port);
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
            socketEventArg.RemoteEndPoint = endPoint;
            socketEventArg.SetBuffer(data, 0, data.Length);
            client.SendToAsync(socketEventArg);
            Debug.WriteLine("sent");
        }
    }
}

如您所见,两者的内容几乎相同。

  • 我设置它发送到的 IP 是我在另一台计算机上运行的程序,我已确认它可以工作。当我运行控制台应用程序时,它会在另一台计算机上的程序上显示我正确发送的数据,并且控制台应用程序会在调试控制台上打印出“已发送”。通用 Windows 应用程序同样打印出“已发送”,但数据包永远不会到达另一台计算机。

  • 我使用 WireShark(一种网络分析/数据包嗅探工具)进行了检查,似乎当我使用控制台应用程序时,发送了一个 UDP 数据包,但是当我使用通用 Windows 应用程序时,没有找到任何 UDP 数据包.

  • 我在调试模式下从 Visual Studio 2015 运行这两个程序,但我想不出它无法工作的任何原因。

任何建议或想法都会有所帮助!

【问题讨论】:

标签: c# visual-studio sockets console-application win-universal-app


【解决方案1】:

只是猜测 - 您是否已将 internetClient 功能添加到您的应用程序中? https://msdn.microsoft.com/en-us/library/windows/apps/mt280233.aspx

【讨论】:

  • 非常感谢!我不敢相信我对功能一无所知,我想我对 UWP 还是很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2011-01-22
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多