مقدار برگشتی تابع کجا باید قرار بگیره؟
با سلام دوستان من قبلا کدی نوشتم والان میخوام اونو تبدیل به دو قسمت بکنم.یک قسمت مسئول پینگ کرن و قسمت دیگه مسئول نمایش پینگ ها.ولی دستور return تابع دوم خطا میگیره!!
namespace patrPing
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
PingShower();
}
public void PingShower()
{
PingReply replayResult = PingSender();
if (replayResult.Status == IPStatus.Success)
{
listBox1.Items.Add(replayResult.Address.ToString() + " Is Online");
}
}
public PingReply PingSender()
{
IPAddress[] ipList = new IPAddress[5];
ipList[0] = IPAddress.Parse("74.125.225.193");
ipList[1] = IPAddress.Parse("74.125.225.192");
ipList[2] = IPAddress.Parse("174.36.84.92");
ipList[3] = IPAddress.Parse("24.246.192.8");
ipList[4] = IPAddress.Parse("69.55.53.89");
foreach (IPAddress address in ipList)
{
Ping pingSender = new Ping();
PingReply replay = pingSender.Send(address);
}
return replay;
}
}
}
چرا replay رو نمیشناسه؟
یه سوال دیگه:
آیا امکان داده هر متد توسط یک ترد اجرا بشه؟یعنی یک ترد تابع پینگ رو بگردونه و یکیش متد نماش رو؟(قاطی نمیکنه؟)
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
چون تو بلاک foreach تعریف شده
تو بیرن از بلاک به صورت null تعریف کن بعد return کن
بعد اونور چک کن که یه وقت خالی بر نگرده
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
نمیدونم منظورتون رو درست متوجه شدم یا نه و لی با این کار فقط یک آی پی نشون داده می شه
public PingReply PingSender()
{
IPAddress[] ipList = new IPAddress[5];
ipList[0] = IPAddress.Parse("74.125.225.193");
ipList[1] = IPAddress.Parse("74.125.225.192");
ipList[2] = IPAddress.Parse("174.36.84.92");
ipList[3] = IPAddress.Parse("24.246.192.8");
ipList[4] = IPAddress.Parse("69.55.53.89");
PingReply replay = null;
foreach (IPAddress address in ipList)
{
Ping pingSender = new Ping();
replay= pingSender.Send(address);
}
if (replay == null)
listBox1.Items.Add("replay is nill");
return replay;
}
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
خب اطلاعات رو باید بریزید تو ارایه بعد return کنید
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
چطوری باید آرایه رو پر کنم؟
با این کد دستو return خطا می گیره....
public PingReply PingSender()
{
IPAddress[] ipList = new IPAddress[5];
ipList[0] = IPAddress.Parse("74.125.225.193");
ipList[1] = IPAddress.Parse("74.125.225.192");
ipList[2] = IPAddress.Parse("174.36.84.92");
ipList[3] = IPAddress.Parse("24.246.192.8");
ipList[4] = IPAddress.Parse("69.55.53.89");
PingReply[] ReturnList = new PingReply[5];
foreach (IPAddress address in ipList)
{
Ping pingSender = new Ping();
ReturnList[0] = pingSender.Send(address);
ReturnList[1] = pingSender.Send(address);
ReturnList[2] = pingSender.Send(address);
ReturnList[3] = pingSender.Send(address);
ReturnList[4] = pingSender.Send(address);
}
if (ReturnList == null)
listBox1.Items.Add("replay is null");
return ReturnList;
}
}
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
خروجیش شما از نوع آرایه ست.تایپ خروجی تابع رو درست کنین:
public PingReply[] PingSender()
{
...
...
...
}
1 ضمیمه
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
ضمیمه 95888
اصلا من با این آرایه مشکل دارم.همونطور که می بینید متد فقط آخرین آی پی رو پینگ می کنه.
متد PingShower درسته؟
یه مشکلی هم داره اینه که وقتی می خوام برنامه رو اجرا کنم یه کم(40-30 ثانیه) طول میکشه تا برنامه بالا بیاد.در حالی که من با برنامه های سنگینی کارکردم که را حت اجرا میشن.بنرتون می تونه از دو قسمت بودن تابه باشه؟
public void PingShower()
{
PingReply [] replayResult = PingSender();
foreach (PingReply ShowReplay in replayResult)
{
listBox1.Items.Add(replayResult[0].Address.ToString() + " Is Online");
listBox1.Items.Add(replayResult[1].Address.ToString() + " Is Online");
listBox1.Items.Add(replayResult[2].Address.ToString() + " Is Online");
listBox1.Items.Add(replayResult[3].Address.ToString() + " Is Online");
listBox1.Items.Add(replayResult[4].Address.ToString() + " Is Online");
}
}
public PingReply [] PingSender()
{
IPAddress[] ipList = new IPAddress[5];
ipList[0] = IPAddress.Parse("74.125.225.193");
ipList[1] = IPAddress.Parse("74.125.225.192");
ipList[2] = IPAddress.Parse("174.36.84.92");
ipList[3] = IPAddress.Parse("24.246.192.8");
ipList[4] = IPAddress.Parse("69.55.53.89");
PingReply[] ReturnList = new PingReply[5];
foreach (IPAddress address in ipList)
{
Ping pingSender = new Ping();
ReturnList[0] = pingSender.Send(address);
ReturnList[1] = pingSender.Send(address);
ReturnList[2] = pingSender.Send(address);
ReturnList[3] = pingSender.Send(address);
ReturnList[4] = pingSender.Send(address);
}
if (ReturnList == null)
listBox1.Items.Add("replay is null");
return ReturnList;
}
}
نقل قول: مقدار برگشتی تابع کجا باید قرار بگیره؟
به اینصورت بنویس:
public void PingShower()
{
PingReply[] replayResult = PingSender();
if (replayResult == null)
{
listBox1.Items.Add("replay is null");
}
else
{
foreach (PingReply ShowReplay in replayResult)
{
if (ShowReplay.Status == IPStatus.Success)
{
listBox1.Items.Add(ShowReplay.Address + "\t" + ShowReplay.Status);
}
}
}
}
public PingReply[] PingSender()
{
IPAddress[] ipList = new IPAddress[5];
ipList[0] = IPAddress.Parse("74.125.225.193");
ipList[1] = IPAddress.Parse("74.125.225.192");
ipList[2] = IPAddress.Parse("174.36.84.92");
ipList[3] = IPAddress.Parse("24.246.192.8");
ipList[4] = IPAddress.Parse("69.55.53.89");
PingReply[] ReturnList = new PingReply[ipList.Length];
for (int i = 0; i < ReturnList.Length; i++)
{
Ping pingSender = new Ping();
ReturnList[i] = pingSender.Send(ipList[i]);
}
return ReturnList;
}