Привет, я новичок в программировании и не вижу, что не так с этим кодом У меня есть текстовое поле, в которое я добавлю имя хоста, а затем строка S1 будет добавлена, а затем пингует все i хочу код, чтобы сделать, это список того, что является правильным именем хоста, так что если я введите имя компьютера в текстовом поле будет свистеть следующийPing host, чтобы определить имя хоста
ComputerDT
ComputerLT
computerTB
computerR0
только один будет иметь правильное имя хоста и я хочу перечислить это в перечне по одному его всем рабочим штрафом, кроме последнего, если заявление
if (host1 != "")
listBox1.Items.Add(host1);
и я получаю host1 не в местном контексте я не могу понять, почему это неправильно
кто может помочь, пожалуйста,
public partial class Form1 : Form
{
public string S1 = "DT";
public string S2 = "LT";
public string S3 = "R0";
public string S4 = "TB";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
update();
}
static string Ping(string host)
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
string errMessage = string.Empty;
string returnMessage;
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
try
{
PingReply reply = pingSender.Send(host, timeout, buffer, options);
if (!(reply == null))
{
switch (reply.Status)
{
case IPStatus.Success:
returnMessage = string.Format("Reply from {0}: bytes={1} time={2}ms TTL={3}", reply.Address, reply.Buffer.Length, reply.RoundtripTime, reply.Options.Ttl);
break;
case IPStatus.TimedOut:
returnMessage = "Connection has timed out...";
break;
default:
returnMessage = string.Format("Ping failed: {0}", reply.Status.ToString());
break;
}
}
else
returnMessage = "Connection failed for an unknown reason...";
}
catch (PingException ex)
{
returnMessage = string.Format("");
}
catch (SocketException ex)
{
returnMessage = string.Format("");
}
return returnMessage;
}
public void update()
{
string[] lines = textBox1.Lines;
List<string> myCollection = new List<string>();
string host1;
foreach (string line in lines)
{
if (line.Contains(""))
myCollection.Add(line + S1);
myCollection.Add(line + S2);
myCollection.Add(line + S3);
myCollection.Add(line + S4);
}
myCollection.ToArray();
{
foreach (string val in myCollection)
host1 = Ping(val);
if (host1 != "")
listBox1.Items.Add(host1);
}
}
}
}
спасибо, что не верю, что я посмотрел, что – user1221996
Хотя скобки - хорошая идея, на самом деле это не решает проблему, потому что host1 объявляется за пределами области foreach? – McKay
Да, это будет потому, что 'host1' не _initialized_ вне цикла' foreach' –