我讨厌看到一个好的赏金被浪费,所以我会尝试用我现有的信息来回答我自己的问题。
[延迟]
使用 Silverlight 测量实际(在线)延迟和速度是不可能的,因为我们无法访问 TCP 套接字,也无法从沙箱访问此类低级接口。这也杀死了“TCP SlowStart”。话虽如此,可以推断 WCF 延迟和 Goodput 带宽。
WCF 服务
2 using System;
3 using System.Net.NetworkInformation;
4 using System.Text;
5
6 public class Service : IService
7 {
8 public bool PingNetwork()
9 {
10 return true;
11 }
12 }
和客户端:
using System;
using System.Windows;
using System.Windows.Controls;
using PingDemo.PingServiceReference;
namespace PingDemo
{
public partial class MainPage : UserControl
{
private ServiceClient client = new ServiceClient();
private DateTime PingStart = new DateTime();
public MainPage()
{
InitializeComponent();
client.PingNetworkCompleted += new EventHandler(client_PingNetworkCompleted);
}
void client_PingNetworkCompleted(object sender, PingNetworkCompletedEventArgs e)
{
if (e.Error == null && e.Cancelled == false)
{
MessageBox.Show("Ping Status: " + e.Result);
}
}
private void btnPing_Click(object sender, RoutedEventArgs e)
{
if (client == null)
{
client = new ServiceClient();
}
PingStart = DateTime.UtcNow();
client.PingNetworkAsync(txtHostIP.Text.Trim());
TimeSpan Est_RoundTripTime = DateTime - PingStart; //may need to look up exact syntax
}
}
}
[上传下载]
与使用 WCF 服务主机确定延迟的类似方式,可以通过将已知(不可压缩)数据集下载到客户端并返回来估计上传和下载速度。
以下博客讨论了通过 WCF 发送大数据的方法。这可用于计算使用与上述类似的方式发送/传输数据的速度。
http://kjellsj.blogspot.com/2007/02/wcf-streaming-upload-files-over-http.html