在控制台应用程序中运行的代码,但不在 Windows 通用应用程序中运行的代码
本文关键字:运行 代码 应用程序 Windows 控制台 | 更新日期: 2023-09-27 18:36:02
我在控制台应用程序中有以下代码:
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运行这两个程序,我想不出它不起作用的任何原因。
任何建议或想法都会有所帮助!
只是一个猜测 - 您是否将互联网客户端功能添加到您的应用程序中? https://msdn.microsoft.com/en-us/library/windows/apps/mt280233.aspx