בעיה ב-C, ב-sockets

PHTLS

New member
בעיה ב-C, ב-sockets

יש לי בעיה, בצ'ט שעשיתי, כאשר אני מקליד רק שורה אחת ושולח - הכל עובר יופי.. אבל כשאני מקליד יותר משורה אחת - המחשב המקבל, מקבל שורה אחת בג'יבריש.. (מילא אם הוא היה שולח רק את השורה הראשונה או משהו בסגנון.. אבל לא..). איפה הבעיה ..? בשליחה ..? בקבלה ? רעיונות ..? קוד הקבלה:
Memo4->Lines->Add(Socket->ReceiveText());​
קוד השליחה:
for (int i=0;i<Memo3->Lines->Count;i++) { if (IsServer){ServerSocket->Socket->Connections[0]->SendText( Memo3->Lines->Strings[Memo3->Lines->Count - 1]); } else { ClientSocket->Socket->SendText(Memo3->Lines->Strings[ Memo3->Lines->Count -1]);} }​
תודה ! עומר
 

IdanR

New member
הקוד שהוספת..

הוא בקושי מראה איזהשהו ממשק, קשה באמת להבין מה הולך בפנים, ואיך בדיוק נשלח הטקסט. כמו-כן לא ציינת אם מדובר בשורה הראשונה הוא האחרונה. לפי דעתי, אם זאת השורה האחרונה, מה שקורה זה שיש לך בעייה של Length לא נכון.. אתה שולח פחות ממה שאתה מצפה לקבל. ואז כשאתה מקבל, המחרוזת היא אינה null-terminated כי חסר התו \0 בסוף, ואתה מקבל ג'יבריש אחרי הטקסט.
 

PHTLS

New member
הסבר

בקוד הקבלה: Memo4 - אליו נכנס הטקסט.. אין הרבה מה להסביר.. בשליחה: Memo3 - זה האיזור שאליו הטקסט מוקלד..
 

selalerer

New member
תראה את הקוד של הצגת הטקסט על

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

PHTLS

New member
זה הקוד אצל המקבל...

Memo4->Lines->Add(Socket->ReceiveText());​
 

selalerer

New member
האם זה הקוד שמציג את הטקסט על

המסך? אם לא, אז תקרא את ההודעה הקודמת שלי שוב ותענה עליה. אם כן, אז מה זה Memo4 ומה זה Lines ומה עושה Add?
 

voguemaster

New member
אולי הבעיה היא במימוש שלך

של SendText ו-ReceiveText. מאוד מעניין אותי לדעת מה קורה שם (טוב, לא *מאוד* מעניין, סתם סקרנות
)
 
למעלה