• 0
الاخير زمانه

سؤال: كيف احصل على ال Ip ؟

سؤال

السلام عليكــم ورحمـة الله وبركاتــه

احاول عمل برنامج بسيط كما في الصورة

post-47438-1229526083_thumb.jpg

لكني لم انجح ،، لا احصل على شيء.

انا استخدمت ال Assistant ،

جربت مع QHostInfo ، QHostAddress ، QNetworkAddressEntry ،

لكن يبدو اني استخدمتهم بصورة خاظئة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

19 إجابة على هذا السؤال .

  • 0

انسخ الكود
  1. [color= #666666; font-style: italic;]// To find the IP address of www.trolltech.com[/color]
  2. QHostInfo[color= #339933;]::[/color][color= #004000;]lookupHost[/color][color= #009900;]([/color][color= #0000ff;]"www.trolltech.com"[/color][color= #339933;],[/color]
  3. this[color= #339933;],[/color] SLOT[color= #009900;]([/color]printResults[color= #009900;]([/color]QHostInfo[color= #009900;])[/color][color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color]
  4.  
  5.  

أنظر فئة QHostInfo

عند طلب العناوين سوف تحصل على QHostAddress ثم أستخدم الدالة toString وقم بطباعتها .

تم تعديل بواسطه مصفوفة
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مثال آخر

انسخ الكود
  1. [color= #993333;]int[/color] main[color= #009900;]([/color][color= #993333;]int[/color] argc, [color= #993333;]char[/color] [color= #339933;]*[/color]argv[color= #009900;][[/color][color= #009900;]][/color][color= #009900;])[/color]
  2. [color= #009900;]{[/color]
  3. QApplication a[color= #009900;]([/color]argc, argv[color= #009900;])[/color];
  4. QHostInfo hf[color= #339933;]=[/color]QHostInfo[color= #339933;]::[/color][color= #202020;]fromName[/color][color= #009900;]([/color][color= #ff0000;]"www.qt-ar.org"[/color][color= #009900;])[/color];
  5. QLabel lab;
  6. lab.[color= #202020;]setText[/color][color= #009900;]([/color]hf.[color= #202020;]addresses[/color][color= #009900;]([/color][color= #009900;])[/color].[color= #202020;]at[/color][color= #009900;]([/color][color= #cc66cc;]0[/color][color= #009900;])[/color].[color= #202020;]toString[/color][color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color];
  7. lab.[color= #202020;]show[/color][color= #009900;]([/color][color= #009900;])[/color];
  8. [color= #b1b100;]return[/color] a.[color= #202020;]exec[/color][color= #009900;]([/color][color= #009900;])[/color];
  9. [color= #009900;]}[/color]
  10.  

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكــم السـلام ورحمة الله وبركاتـه..

مثل ما ذكر اخي مصفوفة ، وللحصول على IP الجهاز ، جرب هذا الكود :

انسخ الكود
  1. QList[color= #000000;]<[/color]QHostAddress[color= #000000;]>[/color] list [color= #000000;]=[/color] QNetworkInterface[color= #000000;]::[/color][color= #808000;]allAddresses[/color][color= #000000;]([/color][color= #000000;])[/color];
  2. foreach[color= #000000;]([/color]QHostAddress addr, list[color= #000000;])[/color]
  3. [color= #000000;]{[/color]
  4. qDebug[color= #000000;]([/color][color= #000000;])[/color] [color= #000000;]<<[/color] addr.[color= #808000;]toString[/color][color= #000000;]([/color][color= #000000;])[/color];
  5. [color= #000000;]}[/color]
  6.  

او هذا :

انسخ الكود
  1. QHostInfo info [color= #000000;]=[/color] QHostInfo[color= #000000;]::[/color][color= #808000;]fromName[/color][color= #000000;]([/color] QHostInfo[color= #000000;]::[/color][color= #808000;]localHostName[/color][color= #000000;]([/color][color= #000000;])[/color] [color= #000000;])[/color];
  2. QList[color= #000000;]<[/color]QHostAddress[color= #000000;]>[/color] list[color= #000000;]=[/color] info.[color= #808000;]addresses[/color][color= #000000;]([/color][color= #000000;])[/color];
  3.  
  4. foreach[color= #000000;]([/color]QHostAddress addr, list[color= #000000;])[/color]
  5. [color= #000000;]{[/color]
  6. qDebug[color= #000000;]([/color][color= #000000;])[/color] [color= #000000;]<<[/color] addr.[color= #808000;]toString[/color][color= #000000;]([/color][color= #000000;])[/color];
  7. [color= #000000;]}[/color]
  8.  

الاثنين يخرجوا نفس النتيجة.

بالتوفيق،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالنسبة للخادم المحلي هو ثابت يمكن معرفته من خلال الثابت التعدادي التالي QHostAddress::LocalHost

والذي يمثل دائما 127.0.0.1 لا يتغير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

شكرا على الاجابة ،،

مصفوفة انا قصدي الحصول على IP الجهاز ،،

تمام اخي Sudanix .

ايضا فشلت في الحصول على ال MAC ،

انا حاولت هكذا

QNetworkInterface Mac = QNetworkInterface::interfaceFromName(QHostInfo::localHostName());
txtMAC->setText(Mac->toString()));

المشكلة في التحويل الى string ، يظهر خطأ ،، ف QNetworkInterface ليس به دالة toString ،

ولم اعرف كيف احول .

حاولت طريق ثانية ايضا لم انجح

QNetworkInterface obj;//= new QNetworkInterface();
QString mac = obj.hardwareAddress();

------------------

محمد لم ألتقي اليوم مع الاستاذ ،،

حالما يكتمل الامر سأعطيك خبر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكــم ورحمـة الله وبركاتــه

ايضا فشلت في الحصول على ال MAC ،

انا حاولت هكذا

QNetworkInterface Mac = QNetworkInterface::interfaceFromName(QHostInfo::localHostName());
txtMAC->setText(Mac->toString()));

المشكلة في التحويل الى string ، يظهر خطأ ،، ف QNetworkInterface ليس به دالة toString ،

ولم اعرف كيف احول .

حاولت طريق ثانية ايضا لم انجح

QNetworkInterface obj;//= new QNetworkInterface();
QString mac = obj.hardwareAddress();

عليكم السلام و رحمة الله

حاول اخي, تعمل كائن من QVarient مشان تستعمل toString() بواسطته و تخزن القيمة النصية في QString

حاول تطبيق الشيفرة التالية, يمكن بتصلح معك::

انسخ الكود
  1.  
  2. QNetworkInterface Mac =
  3. QNetworkInterface::interfaceFromName(QHostInfo::localHostName());
  4.  
  5. // Create a QVariant object.
  6. QVariant v(Mac);
  7.  
  8. // Now you have got a QString object
  9. // contains "Mac" value as string data type.
  10. QString MacToStr = v.toString();
  11.  
  12. //Now you can pass MacToStr in as an argument.
  13. QLabel label(tr(MacToStr));
  14.  
  15.  
  16.  

طبعاً الشيفرة محاولة التحويل إلى قيمة نصية string مشان تقدر تستعملها بالطباعة على الشاشة بواسطة QLabel مثلاً.

ملاحظة:

انا عاملة المشاركة كمحاولة لاستعمال toString و مش لحل المشكلة الرئيسية.

موفقين إن شاء الله

تم تعديل بواسطه رغـد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جرب :

انسخ الكود
  1.  
  2. QNetworkInterface networkInterface[color= #000000;]=[/color] QNetworkInterface[color= #000000;]::[/color][color= #808000;]interfaceFromName[/color][color= #000000;]([/color]QHostInfo[color= #000000;]::[/color][color= #808000;]localHostNa
    me[/color][color= #000000;]([/color][color= #000000;])[/color][color= #000000;])[/color];
  3. QString MAC[color= #000000;]=[/color]networkInterface.[color= #808000;]hardwareAddress[/color][color= #000000;]([/color][color= #000000;])[/color];
  4.  

;

بالتوفيق،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
المشكلة في التحويل الى string ، يظهر خطأ ،، ف QNetworkInterface ليس به دالة toString ،

ولم اعرف كيف احول .

حاولت طريق ثانية ايضا لم انجح

QNetworkInterface obj;//= new QNetworkInterface();
QString mac = obj.hardwareAddress();

جرب :

انسخ الكود
  1. QNetworkInterface networkInterface= QNetworkInterface::interfaceFromName(QHostInfo::localHost
    Name()); QString MAC=networkInterface.hardwareAddress();
  2.  

;

بالتوفيق،

المفروض بتكون بكل بساطة متل مشاركة الأخ الكريم Sudanix, الأخيرة

http://' target="_blank">QString QNetworkInterface::hardwareAddress () const

Returns the low-level hardware address for this interface. On Ethernet interfaces, this will be a MAC address in string representation, separated by colons.

Other interface types may have other types of hardware addresses. Implementations should not depend on this function returning a valid MAC address.

ولكن واضح بأنه جرب هذه الطريقة و لم تنجح, لذلك كتبت مشاركتي كتجربة اخرى...

اطيب المُنى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

اختي رغد ، يظهر لي خطأ

 error: no matching function for call to `QVariant::QVariant(QNetworkInterface&)'

جرب :

انسخ الكود
  1.  
  2. QNetworkInterface networkInterface= QNetworkInterface::interfaceFromName(QHostInfo::localHostNa
    me());
  3. QString MAC=networkInterface.hardwareAddress();
  4.  
  5.  

;

بالتوفيق،

لا يظهر شيء اخي SudaNix !

سأرفق لكم البرنامج

FindIP.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكــم ورحمـة الله وبركاتــه

اختي رغد ، يظهر لي خطأ

 error: no matching function for call to `QVariant::QVariant(QNetworkInterface&)'

وعليكــم السـلام ورحمة الله وبركاتـه..

نعم اخي هناك خطأ لأن QVariant ما بيقبل QNetworkInterface&.

آسفة كان خطأي انا

:blush:

ما شاء الله اخي انت واصل لمواضيع متقدمة, انا كنت مفكرتك مبتديء برسالتك الكريمة.

عموماً رأيي لو بنتظر الأخ Sudanix من معرفة سبب الخطأ.

لأن المفروض تكون بكل بساطة باستعمال الدالة hardwareAdress لأن الواضح بالتوثيقات انها تؤدي الغرض المطلوب.

ما شاء الله بتمنى لك التوفيق

:happy:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ما شاء الله اخي انت واصل لمواضيع متقدمة, انا كنت مفكرتك مبتديء برسالتك الكريمة.

:happy:

لا يا اختي اي مواضيع متقدمة ! انا لسه مبتدئ في اول الطريق.

و منكم نستفيد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعتذر عن انقطاع النت

أخي بالنسبة لل mac فهي فقط تتعامل مع شبكات الإيثرنت من المعروف ضمن معايير osi ال ip يتعام مع طبقة الشبكة ولايتعامل مع الطبقة المادية فيتم تغليف رزمة ip بلوح ايثرنت وهو الذي يتعامل مع عناوين mac للأجهزة وليس مع عناويين ip

أعتقد أن المشكلة انك لا تتعامل مع شبكة إيثرنت (اعتقاد) والعلم عند الله

أو ممكن تكون المشكلة برمجية ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طريقة إضافة فئة الى حاوية QVariant

انسخ الكود
  1.  
  2. namespace MyNamespace
  3. [color= #009900;]{[/color]
  4. [color= #339933;]...[/color]
  5. [color= #009900;]}[/color]
  6.  Q_DECLARE_METATYPE[color= #009900;]([/color]MyNamespace[color= #339933;]::[/color][color= #004000;]MyStruct[/color][color= #009900;])[/color]
  7.  
  8. MyStruct s[color= #339933;];[/color]
  9. QVariant [color= #000000; font-weight: bold;]var[/color][color= #339933;];[/color]
  10. [color= #000000; font-weight: bold;]var[/color][color= #339933;].[/color]setValue[color= #009900;]([/color]s[color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// copy s into the variant[/color]
  11.  
  12. [color= #339933;]...[/color]
  13.  
  14. [color= #666666; font-style: italic;]// retrieve the value[/color]
  15. MyStruct s2 [color= #339933;]=[/color] [color= #000000; font-weight: bold;]var[/color][color= #339933;].[/color]value[color= #339933;]<[/color]MyStruct[color= #339933;]>[/color][color= #009900;]([/color][color= #009900;])[/color][color= #339933;];[/color]
  16.  
  17.  

تم تعديل بواسطه مصفوفة
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اعتذر عن انقطاع النت

أخي بالنسبة لل mac فهي فقط تتعامل مع شبكات الإيثرنت من المعروف ضمن معايير osi ال ip يتعام مع طبقة الشبكة ولايتعامل مع الطبقة المادية فيتم تغليف رزمة ip بلوح ايثرنت وهو الذي يتعامل مع عناوين mac للأجهزة وليس مع عناويين ip

أعتقد أن المشكلة انك لا تتعامل مع شبكة إيثرنت (اعتقاد) والعلم عند الله

أو ممكن تكون المشكلة برمجية ؟؟؟

ال mac موجود ، لو نفذت ايعاز ال ipconfig /all سيظهر لي رقم ال mac ،،

المفروض ان المشكلة برمجية ،،

اعتقد انه لا زالت المصادر قليلة على ال Qt ، و ال Assistant لا يعطي امثلة لكل شيء.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

قم بتجربة الكود التالي

انسخ الكود
  1.  
  2. [color= #339933;]#include <QtGui>[/color]
  3. [color= #339933;]#include<QtNetwork>[/color]
  4.  
  5. [color= #993333;]int[/color] main[color= #009900;]([/color][color= #993333;]int[/color] argc, [color= #993333;]char[/color] [color= #339933;]*[/color]argv[color= #009900;][[/color][color= #009900;]][/color][color= #009900;])[/color]
  6. [color= #009900;]{[/color]
  7. QApplication a[color= #009900;]([/color]argc, argv[color= #009900;])[/color];
  8.  
  9. QLabel lab;
  10. lab.[color= #202020;]setText[/color][color= #009900;]([/color] QNetworkInterface[color= #339933;]::[/color][color= #202020;]allInterfaces[/color][color= #009900;]([/color][color= #009900;])[/color].[color= #202020;]at[/color][color= #009900;]([/color][color= #cc66cc;]0[/color][color= #009900;])[/color].[color= #202020;]hardwareAddress[/color][color= #009900;]([/color][color= #009900;])[/color][color= #009900;])[/color];
  11. lab.[color= #202020;]show[/color][color= #009900;]([/color][color= #009900;])[/color];
  12. [color= #b1b100;]return[/color] a.[color= #202020;]exec[/color][color= #009900;]([/color][color= #009900;])[/color];
  13. [color= #009900;]}[/color]
  14.  

أنا جربته مع شبكة ايثرنت منزلية وأعطاني ال mac وتحصله صحيح نفس ماهو مكتوب في حال ذهبت الى نافذة سطر الأوامر وكتبت الأمر getmac

وإن شاء الله في خلال اسبوعين يدخل ال dsl واكون في تواصل مستمر معكم .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكــم السـلام ورحمة الله وبركاتـه..

اهلا اخي محمد ،، وين هل غيبة؟

مضبوط اخي الان تنفذ البرنامج تمام و حصلت على عنوان ال MAC .

مشكور ،،

بالمناسبة ،، اين وصلت مع ال OpenGL ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحمدالله

بالنسبة للغيبة أخوك مجبر عموما إن شاء الله هي أيام ونكون على اتصال مستمر معكم

أما موضوع openGL لي فترة موقف لأسباب ليست بالضرورة مقنعة ولكن في حال طلبتني في الخدمة فأنا جاهز إن شاء الله .

أخوك/ محمد .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ان شاء الله المانع خير ،،

انا ايضا حاليا موقف .. انتظر العطلة الربيعية :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحال من بعضه :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .