שאלה בתקשורת - socket...
שלום ע"מ ללמוד קצת על תקשורת בדוט נט ניסיתי ליצר תוכנת שרת-לקוח קטנה, תוך שימוש ב-socket. נתקלתי בבעיה שאשמח אם מישהו יוכל לעזור או לתת רעיונות. אז ככה : בשרת יש thread (להלן פרוסס) שאחראי על האזנה לחיבור של קליינטים, ואז יוצר אובייקט שאחראי על כל התקשורת עם אותו לקוח, וממשיך להאזין לאחרים. באותו אובייקט שנוצר אני משתמש בתקשורת אסינכרונית (שימוש ב-BeginReceive וב- EndRead)- ככה אני ממשיך להאזין כמו שצריך. בקליינט אני גם משתמש בתקשורת אסינכרונית. ההודעות הן רק טקסט, כאשר התוים הראשונים מסמנים את סוג ההודעה, תו מפריד ואז גוף ההודעה. הבעיה שמצאתי היא שכאשר, למשל, השרת שולח מספר הודעות ברצף ללקוח מסוים אז לעיתים ההודעות מגיעות בנפרד (ולכן אני יודע את סוג ההודעה לפי הטקסט ההתחלתי שלה) אך לעיתים מתקבלות מספר הודעות ברצף, ז"א ששתי הודעות או יותר "מתחברות" והלקוח מקבל רק הודעה אחת - המכילה את שתי ההודעות. ככה אני לא יודע מה סוג ההודעה השניה. מעבר לכך - לפעמים הגיעה הודעה שהיא למעשה בנויה משתי הודעות שלמות ומחצי הודעה שלישית, ועוד הודעה שבנויה מהחצי השני של ההודעה השלישית. הגדלתי את גודל ההודעה (גודל ה-buffer) אבל זה פתר רק את הבעיה השניה. מישהו יודע איך אני פותר את זה ? חשבתי על סימן מיוחד שיהיה בסוף כל הודעה אבל אני לא יודע איך אפשר לבקש קריאה של הודעה עד תו מסוים. אשמח לקבל כל רעיון ופתרון שעולה לכם בראש. תודה רבה ושבת שלום. DC
שלום ע"מ ללמוד קצת על תקשורת בדוט נט ניסיתי ליצר תוכנת שרת-לקוח קטנה, תוך שימוש ב-socket. נתקלתי בבעיה שאשמח אם מישהו יוכל לעזור או לתת רעיונות. אז ככה : בשרת יש thread (להלן פרוסס) שאחראי על האזנה לחיבור של קליינטים, ואז יוצר אובייקט שאחראי על כל התקשורת עם אותו לקוח, וממשיך להאזין לאחרים. באותו אובייקט שנוצר אני משתמש בתקשורת אסינכרונית (שימוש ב-BeginReceive וב- EndRead)- ככה אני ממשיך להאזין כמו שצריך. בקליינט אני גם משתמש בתקשורת אסינכרונית. ההודעות הן רק טקסט, כאשר התוים הראשונים מסמנים את סוג ההודעה, תו מפריד ואז גוף ההודעה. הבעיה שמצאתי היא שכאשר, למשל, השרת שולח מספר הודעות ברצף ללקוח מסוים אז לעיתים ההודעות מגיעות בנפרד (ולכן אני יודע את סוג ההודעה לפי הטקסט ההתחלתי שלה) אך לעיתים מתקבלות מספר הודעות ברצף, ז"א ששתי הודעות או יותר "מתחברות" והלקוח מקבל רק הודעה אחת - המכילה את שתי ההודעות. ככה אני לא יודע מה סוג ההודעה השניה. מעבר לכך - לפעמים הגיעה הודעה שהיא למעשה בנויה משתי הודעות שלמות ומחצי הודעה שלישית, ועוד הודעה שבנויה מהחצי השני של ההודעה השלישית. הגדלתי את גודל ההודעה (גודל ה-buffer) אבל זה פתר רק את הבעיה השניה. מישהו יודע איך אני פותר את זה ? חשבתי על סימן מיוחד שיהיה בסוף כל הודעה אבל אני לא יודע איך אפשר לבקש קריאה של הודעה עד תו מסוים. אשמח לקבל כל רעיון ופתרון שעולה לכם בראש. תודה רבה ושבת שלום. DC