פורסם 2005 בנובמבר 2420 שנים שלום לכולם,איך אני מגלה את ה- IP של המחשב שלי באמצעות פקודות בשפת C ?תודה!
פורסם 2005 בנובמבר 2420 שנים דבר ראשון - C לא כוללת ספריית רשת סטנדרטית, ולכן אין דרך כללית ב- C לקבל כתובת IP.דבר שני - יכולות להיות לאותו מחשב מספר כתובות IP שונות, על כרטיסי רשת שונים או אפילו על אותו כרטיס, כלומר זו ממש לא כתובת יחידה.על איזו פלטפורמה אתה מדבר (סביבת עבודה+קומפיילר)?
פורסם 2005 בנובמבר 2520 שנים נו, רק בגלל שעוד לא עשיתי את זה אף פעם (עם קצת עזרה מ- MSDN)בעיקרון הפונקציה המרכזית היא GetIPAddrTableהקטע הוא שה- buffer שאתה מעביר לה הוא למעשה MIB_IPADDRTABLE שמוקצה לגודל יותר גדול מאשר sizeof(MIB_IPADDRTABLE).לך תבין מתכנתי microsoft...anyways התוכנית הזו מוציאה לך את כל כתובות ה- IP של המחשב (אם אתה נמצא ברשת - תקבל לפחות 2)#include <iostream>#include <windows.h>#include <tchar.h>#include "iprtrmib.h"#include "iphlpapi.h"using std::cout;using std::cerr;using std::endl;int _tmain(int argc, _TCHAR* argv[]){ PMIB_IPADDRTABLE pIPAddrTable; DWORD dwSize = 0; pIPAddrTable = (MIB_IPADDRTABLE*) malloc( sizeof( MIB_IPADDRTABLE) ); // Make an initial call to GetIpAddrTable to get the // necessary size into the dwSize variable if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) { free( pIPAddrTable ); pIPAddrTable = (MIB_IPADDRTABLE *) malloc ( dwSize ); } // Make a second call to GetIpAddrTable to get the // actual data we want DWORD dwRes; if ( (dwRes = GetIpAddrTable( pIPAddrTable, &dwSize, 0 )) == NO_ERROR ) { for(DWORD i=0;i<pIPAddrTable->dwNumEntries;i++) { IPAddr addr=pIPAddrTable->table[i].dwAddr; cout<<(addr&0xFF)<<"."<<((addr&0xFFFF)>>8)<<"."<<((addr&0xFFFFFF)>>16)<<"."<<(addr>>24)<<endl; } free( pIPAddrTable ); } else { cerr<<"Error retrieving ip addresses\n"; } return 0;}
פורסם 2005 בנובמבר 2520 שנים הממ, יכול להיות שאתה משתמש ב- platform SDK ישן.אתה יכול להוריד את המעדכן ממייקרוסופטhttp://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.