ABA


"המרת מספר לIP ב++Visual c"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6809 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6809
אנילאאנוכי

   08:51   22.08.03   
אל הפורום  
  המרת מספר לIP ב++Visual c  
 
   יש לי מספר כזה:
הקסדצימילי- 0x7f000001
דצימיל- 2130706433
זה הערך של ההאי.פי 127.0.0.1......
איך ממספר כזה אני מוצא את הIP... אני רוצה פשוט שהמשתמש נותן מספר
וזה מדפיס לו אותו כ IP עם הנקודות והכל......


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אחת הדרכים לעשות את זה liranr 22.08.03 09:21 1
     תודה. אני נסה..... אנילאאנוכי 22.08.03 09:59 2
  אפשרות Oranis 22.08.03 11:32 3
  בוא אני אסביר לך איך זה עובד Cd-Writer 29.08.03 23:49 4

       
liranr

   09:21   22.08.03   
אל הפורום  
  1. אחת הדרכים לעשות את זה  
בתגובה להודעה מספר 0
 
   היא לקחת את המספר בהקס - 0x7f000001
ופשוט לחתוך אותו לשלושה חלקים של שתי ספרות 01 00 00 7f (בפועל זה
יכול להתבצע עם שיפטים)
אחר כך שמים את כל החלקים אחד אחרי השני וביניהם נקודה - 127.0.0.1


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   09:59   22.08.03   
אל הפורום  
  2. תודה. אני נסה.....  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Oranis

   11:32   22.08.03   
אל הפורום  
  3. אפשרות  
בתגובה להודעה מספר 0
 
   בVB
אפשרות אחת להתשמש בAPI של WINSOCK
הנה דוגמא



Private Declare Function inet_ntoa Lib "wsock32.dll" (ByVal addr As Long) As Long
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal s As String) As Long
Private Declare Function lstrcpyA Lib "kernel32" (ByVal RetVal As String, ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
'
'
' * ** ** * ** ** * ** **
' Returns the IP Address of a given numerical address
' * ** ** * ** ** * ** **
Public Function GetIPFromAddress(Address As Long) As String
Dim ptrString As Long
ptrString = inet_ntoa(Address)
GetIPFromAddress = GetStrFromPtrA(ptrString)
End Function
'
'
' * ** ** * ** ** * ** **
' Returns the string from the location PtrA
' * ** ** * ** ** * ** **
Public Function GetStrFromPtrA(ByVal lpszA As Long) As String
GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0)
Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA)
End Function
'
'
' * ** ** * ** ** * ** **
Private Sub Command1_Click()
Dim nIp As Long
sIp = "192.68.122.94"
nIp = inet_addr(sIp)

'long Numreic IP
MsgBox nIp

'Normal IP
MsgBox GetIPFromAddress(nIp)
End Sub
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Cd-Writer

   23:49   29.08.03   
אל הפורום  
  4. בוא אני אסביר לך איך זה עובד  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 29.08.03 בשעה 23:56 בברכה, Cd-Writer
 
קודם כל, קוראים לזה Long IP
עכשיו לשאלה האמיתית: איך זה בנוי:
בוא נגיד שאייפיי מורכב ככה:
d.c.b.a


אז אנחנו עושים כזה דבר


d * (256 ^ 3)
+
c * (256 ^ 2)
+
b * 256
+
a

(אני יודע שלא צריך סוגריים, אבל ככה זה יותר קריא לפי דעתי)
בשביל להחזיר את זה ל IP רגיל אנחנו עושים פעולה הפוכה
המשתנה longip מייצג את האייפיי בצורת ה LONG שלו.


longip = (your longip here)
d = int(longip / (256 ^ 3))
longip = longip - (d * (256 ^ 3))

c = int(longip / (256 ^ 2))
longip = longip - (c * (256 ^ 2))

b = int(longip / 256)
longip = longip - (b * 256)

a = longip
longip = 0

כעת האייפיי הוא d.c.b.a

מקווה שהבנת את ההסבר שלי,
יום טוב.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net