我真的很困惑。 我的Program.cs如下:
using System;
using System.IO;
using System.Net.NetworkInformation;
using System.Collections.Generic;
namespace PingApp
{
class Program
{
static void Main(string[] args)
{
string filename = @"PingLog.csv";
{
using (var writer = new StreamWriter(filename, true))
{
}
}
}
}
}
然后我有一个名为WebSitePing.cs的类,这就是我拥有所有代码的地方。这是我的WebSitePing.cs类:
using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
namespace PingApp
{
public class WebSitePing
{
public void Ping()
{
var lstWebSites = new List<string>
{
"www.mearstransportation.com",
"www.amazon.com",
"www.ebay.com",
"www.att.com",
"www.verizon.com",
"www.sprint.com",
"www.centurylink.com",
"www.yahoo.com"
};
foreach (string website in lstWebSites)
{
var roundTripTime = new List<string>();
for (var i = 0; i < 4; i++)
{
try
{
var myPing = new Ping();
var reply = myPing.Send(website, 1000);
if (reply != null)
{
Console.WriteLine("{0}, {1}", website, string.Join(" , ", roundTripTime));
}
}
catch
{
Console.WriteLine("ERROR: You have some TIMEOUT issue");
}
}
}
}
}
}
我必须在我的WebSitePing.cs类中调用Program.cs,以便我可以创建PingLog.csv文件并在WebSitePing.cs中运行代码,我的ping的所有结果都将保存到文件中我是从Program.cs创建的。 有人可以帮我弄明白我该怎么做吗?
答案 0 :(得分:1)
试试这个:
string filename = @"PingLog.csv";
{
using (var writer = new StreamWriter(filename, true))
{
Console.SetOut(writer);
var ping = new WebSitePing();
ping.Ping();
}
}
在拨打WebSitePing
之前,您不仅需要创建.Ping()
的实例,还必须将Console
的输出设置为writer
最好让Ping()
返回IEnumerable<string>
,然后写出这些行。这将是一个更清洁的计划。
WebSitePing
的代码有点破碎。这是最简单的解决方法。
public class WebSitePing
{
public void Ping()
{
var lstWebSites = new List<string>
{
"www.mearstransportation.com",
"www.amazon.com",
"www.ebay.com",
"www.att.com",
"www.verizon.com",
"www.sprint.com",
"www.centurylink.com",
"www.yahoo.com"
};
foreach (string website in lstWebSites)
{
var roundTripTime = new List<long>();
for (var i = 0; i < 4; i++)
{
using (var myPing = new Ping())
{
var reply = myPing.Send(website, 1000);
if (reply != null)
{
roundTripTime.Add(reply.RoundtripTime);
}
}
}
Console.WriteLine("{0}, {1}", website, String.Join(", ", roundTripTime));
}
}
}
答案 1 :(得分:1)
您的问题基本上已在上述评论中得到解答,但现在是:
namespace PingApp
{
class Program
{
static void Main(string[] args)
{
var pinger = new WebSitePing();
pinger.Ping();
}
}
}
除此之外,您还需要将using
块移至Ping()
方法,而不是Program.cs
内部。这样,您可以将输出附加到Console.WriteLine()
,而不是使用StreamWriter
。
或者,您可以在@ Enigmativity的答案中设置Console
的输出,这会将您的Console.WriteLine()
调用重定向到StreamWriter
,而不是重定向到调试器控制台。