עבור לתוכן

בעיה בווינסוק2 בC++

Featured Replies

פורסם

בגדול זה לא חכם לעשות תקשורת ככה, במיוחד בפרוקוטול TCP, בגלל התקורה של יצירת חיבור חדש בכל פעם מחדש (אם אתה רוצה ככה, כבר עדיף UDP).

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

מה הפרמטרים שאתה מעביר ל WSAAsyncSelect (אתה משתמש בו רק פעם אחת בקוד ?) האם אתה מטפל גם ב FD_ACCEPT ?

הבנתי.. אבל בעיקרון זה לא חכם אבל זו לא אמורה להיות בעיה נכון?

אני קורא ל- WSAAsyncSelect בהתחלה לסוקט שמקשיב להתחברות עם FD_Accept|FD_Close ומאוחר יותר אחרי שאני עושה accept אני קורא לזה עבור הסוקט החדש עם FD_Read|FD_Close.

פורסם

ומה ה WMSG שאתה נותן לכל אחד מהם ?

פורסם

WM_Socket

הגדרתי אותו :

#define WM_Socket WM_USER +1

ככה אמרו לי בספר שאני קורא.. ש- WM_User זו ההודעה הכי גבוהה

פורסם

האם בטיפול של FD_CLOSE של הסוקט הלא ראשי! אתה מבטל את ההודעות של הסוקט שיצרת עם קריאה ל WSAAsyncSelect עם 0,0 או קריאה ל closesocket ?

פורסם

עם קריאה ל- closesocket.

פורסם

תנסה אולי לשים ב FD_CLOSE לולאת RECV עד שהוא מחזיר 0.

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

פורסם
  • מחבר

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

פורסם

אחלה :) עוד סיבה שקשה לעזור כשלא מפרסמים את כל הקוד :)

פורסם

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

כמו שאמרת ב- tcp זה די טיפשי להתחבר כל פעם מחדש מן הסתם... ובטח בגלל האיטיות שבזה זה לא הספיק לשלוח את כל המידע... מה שכן זה מוזר כי בכל זאת הוא פרוטוקול אמין לא כמו udp..

הוספתי את זה:

static bool isConnected

ככה שאני מתחבר רק פעם אחת ועכשיו כל המידע נשלח. נשארה רק הבעיה עם ההתחברות ברשת.. אני אנסה לעבוד עם netcat.

תודה רבה

עריכה: טוב אני יודע מה הבעיה עם ההתחברות ברשת.. פשוט צריך לקנפג את המחשב השני עם ה- server שיפנה את ההודעות לפורט הספציפי אליו. תודה

ארכיון

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

דיונים חדשים