Logo

רד-בורד: ארכיון

ראשי > תיכנות > מציאת IP

31/03/2007 21:14:37 haritzik
חבר שלי ביקש ממני שאני יכין לו תוכנה שמגלה IP של איזה אתר שהוא יכניס, אני יודע שבויז’ואל בייסיק זה ממש פשוט אבל אני לומד עכשיו C אז החלטתי להכין לו בC, אבל כשאני עושה את הפקודה:
קוד: system("ping %s", site)
הפקודה לא פועלת טוב, נראה לי כי פקודות מערכת לא יכולות לקרוא מחרוזת.
יש בכל זאת דרך לעשות את זה בלי סוקטים??
תודה למי שיעזור..
31/03/2007 23:22:16 Ratinho
זה לא printf זה לא עובד ככה
אבל מה שכן, אתה יכול לעשות משהו כזה:
קוד:
char fat[]="ping ";
scanf("%s",ip)
strcat(fat,ip);
system(fat);

K?[ההודעה נערכה על-ידי Ratinho ב-31/03/2007 23:22:46]
01/04/2007 11:54:31 haritzik
תודה אחי,
פועל.
03/04/2007 17:29:40 HLL
טעות. (Stack overflow)
רטינו, ככה אתה מצפה לעבור את קודגורו!?[ההודעה נערכה על-ידי HLL ב-03/04/2007 17:29:58]
03/04/2007 20:40:40 חזיר
למה להשתמש בכלל ב- ping?
ולא ב- gethostbyname
03/04/2007 21:32:49 Ratinho
אע HLL? איפה יש סטאק אוברפלו??
וחזיר (אע???) -
"יש בכל זאת דרך לעשות את זה בלי סוקטים?"
03/04/2007 21:38:07 חזיר
Ratinho:

http://www.logix.cz/michal/devel/various/gethostbyname.c.xp
03/04/2007 21:46:39 Ratinho
אה נחמד לדעת
אני גם יכול לעשות את זה על סתם מחרוזת רגילה כע?<
03/04/2007 21:48:42 חזיר
אתה עושה את זה על הוסט, מה זאת אומרת סתם מחרוזת רגילה?
03/04/2007 21:50:23 Ratinho
אע, בלע, לא ראיתי את הסטרקטים האלה..
03/04/2007 22:50:41 devil kide
רטינו, הגדרת את fat בגודל של 5 (המחרוזת ping+null) , ואז עשית strcat(fat,ip);
לאן ת’רוצה שIP יכנס.
בגלל זה יש stack overflow
03/04/2007 23:41:51 haritzik
מה אתה רוצה ממנו??
לי הפעולה:
קוד: #include <stdio.h>
#include <conio.h>
#include <dos.h>
char finder[]="ping ";
char ip[];
int main()
{
printf("Enter the adress: ");
scanf("%s", ip);
strcat(finder,ip);
system(finder);
getch();
}

עבדה מצוין
03/04/2007 23:47:04 Ratinho
זה עובד, אבל דורס את הזכרון
בגלל שכשאר אני מצהיר
קוד:
char finder[]="ping ";

זה נותן מקום של 6 תווים (כולל NULL), וכאשר אני עושה strcat אני דוחף עוד תווים, למרות שיש מקום רק ל6 תווים
אז כעיקרון זה לא חוקי, אבל תלוי בקומפיילר שלך, יש כאלה שמאפשרים, יש כאלה שיתקעו לך באמצע, ויש כאלה שימחקו לך את הWord (:
03/04/2007 23:50:17 haritzik
אצלי זה פועל ואז זה כותב שיש באגים והתוכנית נאלצת להיסגר..
דרך אגב, חזיר -
בקשר למה שהצעת - זה לא פועל לי במהדר (EV-CPP) באיזה כן??
03/04/2007 23:56:37 devil kide
רטינו, למה 6 תווים?
זה עושה 4+null.
p=1
i=2
n=3
g=4
Null=5
03/04/2007 23:57:00 Ratinho
תכתוב משהו כזה:
קוד:
include <stdio.h>
#include <conio.h>
#include <dos.h>

int main()
{
char finder[40]="ping ";
char ip[30];
printf("Enter the adress: ");
scanf("%s", ip);
strcat(finder,ip);
system(finder);
getch();
}

ואז לא אמורה להיות טעות (:
עריכה: עדן, יש שם רווח
עוד עריכה: בעע בעע, לא משתנים גלובלים, לא צריך, תעשה לוקאליים בmain
[ההודעה נערכה על-ידי Ratinho ב-03/04/2007 23:57:31][ההודעה נערכה על-ידי Ratinho ב-03/04/2007 23:58:19]
04/04/2007 00:16:35 haritzik
כן - עכשיו זה פועל טוב..
(זה לא משנה אם אני יעשה גלובלים או לוקאלים, זאת כל התוכנית..)
אתה יודע איך אפשר לעשות את מה שחזיר אמר במהדר הזה(dev-cpp)?
זה פשוט לא מזהה את הספריות..
04/04/2007 01:26:02 Ratinho
לא מכיר את זה,אבל יש מצב גדול שזה רק ל
visual c++
04/04/2007 02:24:43 חזיר
haritzik: לא יודע, האמת שאני לא מתכנת.
אני מכיר כמה פונקציות שימושיות וזהו..
04/04/2007 08:27:32 HLL
יפה שהבנתם איך לתכנת... למרות שזה עדיין לא חסין האקרים, אבל לפחות זה לא שגוי בבסיס...

כשאני אגמור אתכם אתם עוד אולי במקרה תתכנתו נכון :P

לגבי gethostbyname, הוא מתועד בטקסט של beej גם בצורה מאוד יפה, וזה אמור לעבוד בכל סביבה שמיישמת סוקטים סטנדרטיים (GNU, eVC, VC, Dev... etc)[ההודעה נערכה על-ידי HLL ב-04/04/2007 08:31:29]
04/04/2007 09:39:31 Ratinho
lol, הלל י’נוב!!
הינה הלינק לביג’ הזה: http://beej.us/guide/
רק חבל שזה באנגלית, בלע, צריך לשבור ת’ראש..
04/04/2007 09:48:24 haritzik
סתם שתדע רציתי לדעת איך לעשות את זה בלי סוקטים..
אבל בסדר אני יעשה את זה עם סוקטים..
04/04/2007 12:13:34 HLL
מה ש "ping" עושה, זה בידיוק זה ...
דונט קאל מי נוב, יו אסס!
חוצמזה, ביג’ יש גם בעברית (גוגל איט).
04/04/2007 12:48:37 Ratinho
אה, תודה
הינה לינק- http://www.geocities.com/uv1st/netguide-heb/index.html
עמודים: 1