send packet TCP/IP

send packet TCP/IP

איך אני יכול לרשום תוכנה ב VB6 שאני יוכל לשלוח קובץ או משתנים לאייפי מסויים שמאזין בפורט מסויים ?
 

טרמפיסט

New member
בפשטות

למיטב זכרוני אין קיצורי דרך אך עם זאת הטיפול בתקשורת שרת-לקוח הרבה יותר פשוט מכמה וכמה שפות אחרות. עליך להשתמש בפקד Winsock (אותו ניתן למצוא בחלון הוספת הפקדים בלחיצה על Ctrl+T) וכן לספק את הקובץ mswinsck.ocx (יש מצב שאיני מאיית אותו נכון) עם כל עותק של התוכנית שלך. בהנחה והצלחת ללמוד איך ניתן להאזין (בצד השרת) ולהתחבר (בצד הלקוח) הרי שהעברת קובץ היא משימה פשוטה. אם התוכנית מעבירה אך ורק קובץ אחד -- אין קל מזה. אם התוכנית משתפת מידע נוסף או מעבירה יותר מקובץ אחד -- העניין הופך להיות סבוך יותר. אם מדובר בקובץ אחד -- פשוט קרא מקובץ (בינארי) ושלח את המידע באמצעות SendData. צד השרת ידע שכאשר הוא מקבל מידע זהו הקובץ לו הוא מצפה. אם מדובר במספר קבצים או במידע נוסף עליך לבנות שפה משותפת בין השרת ללקוח: תכנן אותה כך שצד השרת ידע בדיוק אם המידע שהגיע אליו (דרך DataArrival) שייך לקובץ (ואם כן, איזה קובץ) או שזהו חלק ממידע מקדים או מידע אחר.
 
תודה

קודם כל תודה על ההסבר יש לי עוד שאלה. : ) אני צריך להעביר קובץ אחד אני משתמש כבר ב Winsock אבל איך אני אומר לו שיקרא קובץ מסויים שהוא TXT ויעביר אותו איך אני בדיוק רושם את הפקודות האלה Winsock1.RemoteHost = "10.0.0.4" Winsock1.RemotePort = 2000 Winsock1.Connect עכשיו אני מחובר ואז נניח הקובץ שלי נמצא ב c:\test.txt איך אני אומר לו שיגש לשם ויקרא אותו וישלח לשרת שממתין לקבלת הקובץ? התהליך שאני צריך זה להתחבר לשרת באיפי מסויים שממתין לי באיפי מסויים ואז אני אשלח לו קובץ TXT לא משנה באיזה צורה ושיחזיר לי הודעה שהקובץ נלשח בהצלחה תודה שוב
 

טרמפיסט

New member
הייה ממוקד יותר

לא ברור לי איזה חלק מהתהליך לא ברור לך; התהליך כולו מורכב מכמה שלבים שרק אחד מהם מורכב: * חיבור הלקוח לשרת מאזין * פתיחת הקובץ ע"י הלקוח ושליחתו במנות קצובות לשרת * סגירת הקובץ והתקשורת בסיום השליחה השלב המורכב הוא שליחת הקובץ בצורה בה ידע השרת מתי הוא מתחיל ומתי הוא מסיים לקבל את הקובץ. תוכל לבנות מיני-פרוטוקול פשוט אשר בו מוגדרת ההודעה הראשונה מהלקוח לשרת כהודעה המכילה אינפורמציה על הקובץ הנשלח: גודלו, מס' המנות שישלחו, שמו המלא ואולי עוד פרטים שתראה לנכון ליידע בהם את השרת. באיזו דרך שלא תבחר שליחת הנתונים מתבצעת ע"י הלקוח בפרוצדורה SendData וקבלתם מתבצעת ע"י השרת באירוע DataArrival. השליחה תתבצע במנות בגודל קבוע: הכרז על Buffer בגודל מסויים (נניח 2048 בייט) ובלולאה קרא אליו את מנת הנתונים הבאה מהקובץ ושלח. הלולאה תסתיים כשיסתיים הקובץ (וכך מן הסתם המנה האחרונה תהייה קטנה מהקודמות... הסיכוי שגודלו של הקובץ מתחלק בדיוק בגודל ה-Buffer אינו גדול). אני מקווה שכעת ה דברים ברורים קצת יותר. בקשר לקריאה\כתיבה לקבצים תוכל להעזר באינספור דוגמאות באינטרנט; כנ"ל לגבי ביצוע התקשורת בין המחשבים. באשר לשאר -- אני מניח שהייתי ברור מספיק.
 
תודה שוב

התהליך ברור לי אבל אני לא למדתי VB אני לא ממש יודע איך לרשום את הכל ואני צריך לעשות את זה שהכל יהיה בלחיצת כפתור אחת , השרת שאני מדבר עליו הוא כבר מאזיו ןמחכה שאני ישלח לו את הנתונים אבל אם אתה יכול לרשום לי את התהליך הזה בשפת VB אודה לך מאוד תודה שוב על העזרה שלך , טוב לדעת שיש אנשים נחמדים כמוך : ) שבת שלום
 

טרמפיסט

New member
דוגמאות

הכנס לאתרים כמו Dr. VB או - ProgrammersHeaven וחפש דוגמאות. הפעם האחרונה שבה נגעתי ב-VB היתה לפני יותר מ-5 שנים, לכן לא כדאי להסתמך על התחביר שאכתוב.
 
למעלה