【发布时间】:2015-11-24 12:04:16
【问题描述】:
我尝试使用基于this source code 的 UWP 创建一个 UDP 发送和侦听应用程序。
它应该像这样工作:
- 在 8080 端口监听消息
- 向广播地址发送消息
- 从另一个侦听发送到广播的消息的 UDP 服务器接收消息
我有Listen 和Send 方法。
构造函数
public MainViewModel()
{
Listen();
Send();
}
听
private async void Listen()
{
listenerSocket = new DatagramSocket();
listenerSocket.MessageReceived += (x, y) =>
{
var a = "2";
};
await listenerSocket.BindServiceNameAsync("8080");
}
发送
private async void Send()
{
IOutputStream outputStream;
string localIPString = GetLocalIp();
IPAddress localIP = IPAddress.Parse(localIPString);
string subnetMaskString = "255.0.0.0";
IPAddress subnetIP = IPAddress.Parse(subnetMaskString);
HostName remoteHostname = new HostName(GetBroadcastAddress(localIP, subnetIP).ToString());
outputStream = await listenerSocket.GetOutputStreamAsync(remoteHostname, "8080");
DataWriter writer = new DataWriter(outputStream);
writer.WriteString(localIPString);
await writer.StoreAsync();
}
广播好像发送不通了。
我有另一个程序(用 Java 编写)也向广播地址发送消息,此侦听器接收从广播发回的消息。
我应该设置什么才能使发送工作?
【问题讨论】:
-
您能发布您的
GetBroadcastAddress(localIP, subnetIP)代码吗?我认为问题可能出在这里,我测试了您的代码,但改为使用本地地址,并且有效。