PDA

View Full Version : شرط Length , Count رو نمیتونم روی این کد پیاده کنم ؟



Mosafers
چهارشنبه 27 دی 1391, 20:58 عصر
سلام چرا شرط روی اینکد جواب نمیده ؟

خروجی ها به شکل زیر هستش.

0.0.0.0
192.168.1.1
0.0.0.0

میخوام فقط ip هایی که دارای محتوا هستند مثل : 192.168.1.1 رو پینگ کنه ؟


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

string ipDNS;
private void button1_Click(object sender, EventArgs e)
{

IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
foreach (NetworkInterface networkCard in NetworkInterface.GetAllNetworkInterfaces())
{
foreach (GatewayIPAddressInformation gatewayAddr in networkCard.GetIPProperties().GatewayAddresses)
{
if (gatewayAddr.Address.ToString().Count() >= 1)
{
ipDNS = gatewayAddr.Address.ToString();
richTextBox1.Text += "\nآی پی دی ان اس : " + ipDNS.ToString();
}
}
}

if (ipDNS.Count () <8)
{
Ping ping = new Ping();
PingReply pingReply = ping.Send(ipDNS);
richTextBox1.Text += "\nآدرس : " + pingReply.Address;
richTextBox1.Text += "\nزمان : " + pingReply.RoundtripTime;
richTextBox1.Text += "\nوضعیت : " + pingReply.Status;
}
}
}
}


پروژه هم پیوست کردم...

danialafshari
چهارشنبه 27 دی 1391, 21:24 عصر
سلام
شرط رو باید بزرگتر بگیرید نه کوچکتر
if (ipDNS.Count () >8)
{
Ping ping = new Ping();
PingReply pingReply = ping.Send(ipDNS);
richTextBox1.Text += "\nآدرس : " + pingReply.Address;
richTextBox1.Text += "\nزمان : " + pingReply.RoundtripTime;
richTextBox1.Text += "\nوضعیت : " + pingReply.Status;
}
موفق باشید

Mosafers
چهارشنبه 27 دی 1391, 21:42 عصر
سلام ببخشید دوباره وقت شما رو گرفتم دوست عزیز مشکل از این نیست دیگه اومدم از >استفاده کردم...
نمیدونم دلیلش چیه...

danialafshari
چهارشنبه 27 دی 1391, 21:53 عصر
سلام
اگر این خروجی رو نمی خوای پس من سوال رو درست متوجه نشدم

saied_hacker
چهارشنبه 27 دی 1391, 21:54 عصر
اگه منظورت اینه که 0.0.0.0 رو نگیره میتونی بیای ادرس هاست/یادم نیس چیه ( همون 192 خودت )چک کنی ببنی چیه دیگه.
اگه 0 بود هیچ اگر نبود بیاد پینگ کنه.

string[] myip = ipDNS.Split('.');
if (myip[0] != "0" && myip[1] != "0")
// Do

مهرداد صفا
چهارشنبه 27 دی 1391, 22:17 عصر
سلام
شرط را به این صورت تغییر دهید:

if((from x in ipDNS.Split('.') where (x!="0") select x).Count()>0)



هر آدرسی به جز 0.0.0.0

mehdi.mousavi
پنج شنبه 28 دی 1391, 10:52 صبح
سلام
شرط را به این صورت تغییر دهید:

if((from x in ipDNS.Split('.') where (x!="0") select x).Count()>0)


هر آدرسی به جز 0.0.0.0

سلام.
نیازی به نوشتن چنین کدی برای چک کردن IP نیست. در واقع نیازی نیست IP رو به String تبدیل کنید، بعد مجددا String رو Split کنید که ببینید رقم صفر داره یا نه و ... اگر دقت کنید، کلاس IPAddress حاوی Property ای به اسم Address هستش که یک long برمیگردونه که نشون دهنده اون IP v.4 مورد نظر هستش. کافیه اون Property رو با صفر مقایسه کنید. البته چون این Property، فقط برای IPv4 معنا داره، برای همین منقضی شده. پس چیکار باید کرد؟ اگر بازهم توجه کنید، روی کلاس IPAddress چندین فیلد تحت نام های Any، Broadcast، Loopback و ... تعریف شده که در اون Any، معادل 0.0.0.0 هستش؛ پس کافیه تا مقایسه مورد نظر رو بدین شکل تغییر بدیم:

IPAddress addr = gatewayAddr.Address;
if (addr.Equals(IPAddress.Any))
{
//0.0.0.0
}


موفق باشید.