【发布时间】:2018-08-22 04:47:46
【问题描述】:
我有一个涉及自动化的 C# 作业。我的代码主要基于我在网上找到的东西。我当前的问题是我试图从 CSV 文件中逐行读取 IP 地址到一个数组中,ping 数组的每个对象,并附加对象,以便每个对象将读取“IP,状态(如果 ping 成功),响应时间"
我正在尝试使用 foreach 循环,但遇到了错误。我在 Mac 上,所以它使用单声道。任何帮助,将不胜感激。
(如果它有助于解释任何事情,请在下面完整分配)
从预制的 C# 控制台应用程序开始,您的应用程序将在运行时允许三个命令 - 启动、停止和退出。应用程序将在首次运行时要求用户提供 CSV 文件(用户必须提供 CSV 文件)。该文件将包含网址(每行 1 个)——教授将提供初始文件。 您的应用程序将设置一个计时器,以便每次计时器运行时,它都会 ping 提供的网址,收集服务器是否响应以及每个服务器的响应时间。计时器应该从用户输入“start”到他们输入“stop”或“exit”时连续运行。数据将被记录回另一个 CSV 文件,其中包含网址、响应时间以及服务器是否完全响应。
using System;
using System.Timers;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Collections.Generic;
using Microsoft.VisualBasic;
namespace MT_proj4
{
public class Program
{
public static String[] addressArray = File.ReadAllLines("Project04_URLs.csv");
public static string IP;
public bool status;
public string time;
public static void Main()
{
foreach (string s in addressArray)
{
IP = Console.ReadLine();
bool PingHost(string)
{
bool pingable = false;
#pragma warning disable XS0001 // Find APIs marked as TODO in Mono
Ping pinger = new Ping();
#pragma warning restore XS0001 // Find APIs marked as TODO in Mono
try
{
PingReply reply = pinger.Send(IP);
pingable = reply.Status == IPStatus.Success;
}
catch (PingException)
{
return false;
}
for (int i = 0; i < addressArray.Length; i++)
{
addressArray[i] = addressArray[i] + pingable;
}
}
}
}
static void TimerClass()
{
Timer timer = new Timer(5000);
timer.Elapsed += HandleTimer;
timer.Start();
Console.WriteLine("Type 'exit' to close...");
Console.WriteLine("Enter a command...");
while (true)
{
Console.Write("Command: ");
string command = Console.ReadLine();
Console.WriteLine("Command entered: " + command);
if (command.ToLower() == "stop")
timer.Stop();
else if (command.ToLower() == "exit")
break;
}
}
static void HandleTimer(Object source, ElapsedEventArgs e)
{
Console.WriteLine("\nHandler not implemented...");
}
}
【问题讨论】:
-
有什么错误?
-
我会稍微重组一下。 ping 代码应该运行自己的线程。删除计时器,然后简单地阻止 Console.ReadLine()。如果结果不是预期的,请重复,直到您停止或退出
-
bool PingHost(string) Error CS1001: Identifier expected (CS1001) + PingHost 表示并非所有代码路径都返回值
-
@tatmanblue 我不确定你的意思? Console.ReadLine() 会去哪里?
标签: c# csv timer automation ping