מנסה לפתוח מערך של API Winsock בVB6 אבל לא מצליח, מחפש חלופה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

מנסה לפתוח מערך של API Winsock בVB6 אבל לא מצליח, מחפש חלופה


tal^_^

Recommended Posts

שלום :D

אני עובד עם API Winsock ב VB6 ובניתי תוכנה שמתקשרת עם שרת, שולחת מידע ואמורה לקבל בחזרה מידע. הקטע שהיא צריכה לעשות את זה חצי מליון פעם (חצי מליון פעם לשלוח מידע וחצי מליון לקבל).

אם אני עושה את זה עם סוקט אחד, זה לוקח שנים (כל פעם לשלוח מידע, לחכות שהמידע יתקבל, לסגור תסוקט, לפתוח מחדש.... בחישוב שלי זה יקח המון שעות).

לכן רציתי לזרז תקצב, לא להכפיל פי 2 אלה פי 100, לכן ניסתי לעשות את זה עם מערך של 100 סוקטים, שכל אחד שולח מידע ומקבל, אב קיבלתי את השגיאה הבאה:

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

Microsoft Visual Basic

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

Compile error:

Constants, fixed-length strings, arrays, user-defined types and Declare statements not allowed as Public members of object modules

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

OK Help

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

הוא אומר שאי אפשר לעשות מערך של סוקטים בגלל שהם פאבליק...

1.למה? (מתוך סקרנות, מה זה משנה)

2. מה אני עושה? לא בא לי להגדיר ידנית 100 סוקטים.... האם יש דרך לעקוף את זה?

תודה

קישור לתוכן
שתף באתרים אחרים

אני לא יכול לשלוח הכל באותו חיבור כי כשאני יקבל את המידע יהיה בלאגן.... כי עבור כל מידע שאני שולח, אני צריך לקבל משהו ספיצי ואני לא יכול לערבב בניהם.

לפי דעתי אתה טועה, יצירת מערך עם 100 סוקטים יעשו את העבודה הרבה יותר מהר מסוקט אחד.... הגיון פשוט....

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

קישור לתוכן
שתף באתרים אחרים

וואלה פעם עשיתי chat ב- VB שזה אותו פרנציפ

בינתיים כבר מזמן הסרתי את ה- VB מהמחשב שלי

אז מה שאני מתאר לך זה ממה שאני זוכר מהראש :

אחרי שאתה גורר פקד של Winsock32 אל הטופס ב- VB

אתה ניגש אל חלון ה- Properties של הפקד

בשם שלו אמור להופיע שם כמו winsock1 או משהו דומה

עכשיו אתה משנה את השם שלו ל- winsock1)0) כלומר מוסיף סוגריים ואינדקס 0 או 1 , אני לא זוכר בדיוק

ואז אמורה להופיעה הודעה האם להפוך את הפקד למערך של פקדים

האפליקציה של צד השרת אמורה להשתמש במופע אחד של winsock שנמצא תמיד במצב האזנה לדוגמא winsock(1)

התפקיד שלו זה לקבל פניות וליצור winsock חדש עבור כל פניה חדשה של client למשל winsock(2)

מעכשיו ואילך ה-client והשרת מדברים בינהם דרך winsock(2)

ו-winsock(1) ממשיך להאזין כדי לקבל בקשות התקשרות חדשות

בצד ה- client מספיק להשתמש ב- winsock אחד בלבד

קישור לתוכן
שתף באתרים אחרים

תודה על הנסיון לעזור, אבל רשמתי במפורש שאני משתמש בAPI WINSOCK, משמע שאני לא משתמש בפקד.

התוכנה עובדת, אין בעיות חוץ מהזמן ריצה, אני יודע להפעיל את הסוקטים והכל, אבל רוצה לזרז את התהליך.

בנוסף, אין לי שום בעיה בצד של השרת אז כל מה שרשמת היה די מיותר.

לפחות ניסית.

אם אין כאן מישהו שיודע, אולי תוכלו להפנות אותי לאיזה ערוץ במירק/פורום שיעזרו לי?

קישור לתוכן
שתף באתרים אחרים

א. אתה לא יכול להגדיר (לא יודע איך זה ב VB בדיוק), שהמשתנה הזה לא יהיה כחלק מ CLASS אלה משהו כללי/גלובלי בתוכנית בכלל ?

ב. לא בטוח שפתיחת 100 סוקטים לאותו מקום זה חכם, למה פשוט לא לעשות פרוטוקול שיאפשר לך לשמור על הסדר בין שליחת הבקשות בו זמנית דרך אחד ?

קישור לתוכן
שתף באתרים אחרים

א. אתה לא יכול להגדיר (לא יודע איך זה ב VB בדיוק), שהמשתנה הזה לא יהיה כחלק מ CLASS אלה משהו כללי/גלובלי בתוכנית בכלל ?

ב. לא בטוח שפתיחת 100 סוקטים לאותו מקום זה חכם, למה פשוט לא לעשות פרוטוקול שיאפשר לך לשמור על הסדר בין שליחת הבקשות בו זמנית דרך אחד ?

אתה אמור לשנות את ה Index ב properties ולשנות את זה למספר הרצוי ואז אתה ניגש לזה

winsock1(1);

לדוגמא

וזה אמור להיות הרבה יותר קל מאשר שימוש ב apis כמו שאתה משתמש היום

קישור לתוכן
שתף באתרים אחרים

IceBreak: זה מוגדר כמו שצריך, לא כחלק מ CLASS מסוים, זה גלובלי פומבי, בשביל שהמודל של הסוקטים יוכל לעשות בזה שימוש...

מה הכוונה לעשות פרוטוקול? אני כותב רק את הצד של הלקוח, לא את השרת, אני עובד מול שרת שרץ כבר.

UnPluggeD: כן, אפשר לעשות את זה אבל בסוקטים עם פקד וכמו שאמרתי רשמתי את זה עם API.

אני יכול לשנות את זה לפקד אבל :

1. זה עבודה ואני לא רוצה

2. יש דרך לעשות את זה, כי הAPI אומר להיות יותר טוב מהפקד ואני רוצה לדעת איך, מתוך עניין.

אם מישהו יודע איך או מכיר איזה מקור לידע (ערוץ במירק/קהילה) שיכתוב

תודה

קישור לתוכן
שתף באתרים אחרים

IceBreak: זה מוגדר כמו שצריך, לא כחלק מ CLASS מסוים, זה גלובלי פומבי, בשביל שהמודל של הסוקטים יוכל לעשות בזה שימוש...

מה הכוונה לעשות פרוטוקול? אני כותב רק את הצד של הלקוח, לא את השרת, אני עובד מול שרת שרץ כבר.

UnPluggeD: כן, אפשר לעשות את זה אבל בסוקטים עם פקד וכמו שאמרתי רשמתי את זה עם API.

אני יכול לשנות את זה לפקד אבל :

1. זה עבודה ואני לא רוצה

2. יש דרך לעשות את זה, כי הAPI אומר להיות יותר טוב מהפקד ואני רוצה לדעת איך, מתוך עניין.

אם מישהו יודע איך או מכיר איזה מקור לידע (ערוץ במירק/קהילה) שיכתוב

תודה

תיצור איזה קלאס משלך

שכל מה שיש בו זה את השליחה וכל השטיות וכל Events

תיצור מערך מהקלאס שלך...

ותפעיל אותו וככה תיהיה לך גישה מסודרת לכל אחד ואחד :)

קישור לתוכן
שתף באתרים אחרים

אוקי רק עכשיו הגעתי למחשב, קודם כל תודה על כל הנסיונות עזרה.

IceBreak: כן, אני וחבר שלי מנסים משהו עם גוגל

NJorl : אני באמת חיפשתי שם לפני ששאלתי בפורום ולא ראיתי את מה שיש בלינק השני שלך, זה נראה מבטיח אני יבדוק את זה עכשיו.

UnPluggeD : בעקרון יש פונקציה שכל מה שהיא עושה זה לשלוח, אבל בחיים שלי לא עשיתי מערך מקלאס, אתה יכול להביא דוגמא בבקשה? תודה

קישור לתוכן
שתף באתרים אחרים

אוקי רק עכשיו הגעתי למחשב, קודם כל תודה על כל הנסיונות עזרה.

IceBreak: כן, אני וחבר שלי מנסים משהו עם גוגל

NJorl : אני באמת חיפשתי שם לפני ששאלתי בפורום ולא ראיתי את מה שיש בלינק השני שלך, זה נראה מבטיח אני יבדוק את זה עכשיו.

UnPluggeD : בעקרון יש פונקציה שכל מה שהיא עושה זה לשלוח, אבל בחיים שלי לא עשיתי מערך מקלאס, אתה יכול להביא דוגמא בבקשה? תודה

זה נורא פשוט !

במאפיינים של האובייקט יש שדה שניקרא אינדקס תכניס לשם 0 ואז פשוט

winsock(index)

פשוט ביותר וגם בכל הפונקציות ואירועים יהיה גם משתנה בשם אינדקס

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...