
getaddrinfo כדי לקבוע את פרטי הכתובת, ב-socket ליצירת סוקט, וב-connect להתחברות. המרצה מדגיש שהכתובת שמעבירים ל-connect צריכה להיות כתובת שהוחזרה מהפונקציה הקודמת, ולא ערך שהומר בצורה שגויה.getaddrinfo, הפעם כדי לקבוע את הכתובת והפורט שבהם השרת יאזין.bind קושרת אותו לכרטיס הרשת ולפורט.listen אומרת לסוקט להמתין להתחברויות, ו-accept מחזירה סוקט חדש לכל לקוח שהתחבר. התקשורת עם הלקוח נעשית על הסוקט החדש, והסוקט הראשון ממשיך להקשיב.WSAStartup, שמקבלת מבנה WSADATA ומספר גרסה. המרצה מראה שאת גרסה 2.2 בונים בעזרת מאקרו שמזיז את הבייט העליון ומחבר אותו לבייט התחתון, והתוצאה היא 514. בסיום קוראים ל-WSACleanup.WSAGetLastError מחזירה את קוד השגיאה. המרצה קורא ב-MSDN שהפונקציה מחזירה ערך שונה מאפס כשיש כשל, ושיש רשימה מסודרת של קודי שגיאה.הטקסט המלא של הדקות הראשונות בהרצאה «צד שרת» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב בואו נמשיך אז אנחנו מנסים להתחבר לשבץ בברק אז בואו בברק אז בואו נסגור רק את זה זה מיותר וגם זה מיותר וגם זה מיותר ובואו נראה מה קורה כאן אז make word זה start up זה get address info זה הצליח השאלה היא מה הוא מקבל בתור address info אם זה משהו שקשור למשהו שאנחנו מכירים אדרס דאטה 35, כן אני לא יודע מה זה הדברים האלה בכלל
מה זה 35, מה זה סולמית, דברים נורא מוזרים זה בידיעה שאיפסנו קודם את ריזנט, איפה ריזנט? את ריזנט, הנה התחלנו את הפוינטר, זאת אומרת הם חיזמו את זה למשהו, הם החזירו את זה למשהו ונראה שהם פמילי 2, סופי טייפ 0, נראה מוזר ויצירה של הסוקט, כבר לא invalid socket כמו שזה היה בהתחלה, יופי, מה זה invalid?
invalid socket זה מינוס אחד, נכון? מינוס אחד, כן, ו-socket address ו-connect, והוא נכשל, הוא לא מצליח להתחבר, ssa, מה זה ssa? בואו נראה ssa, סוקט מעליי, תואר מעל קונקט, אה, סוקט אדרס, שאלה מאופת מה יש בסוקרט אדרס אחרי זה השאלה היא סוקרט אדרס צריך למלא אותו בערכים זה לא הגיוני ככה
בואו נעשה F1 ונמתין יפה בואו ניתן לו גם סינק לא שאנחנו צריכים את זה קונקט פונקשן יופי אבל מה שאני רוצה זה את רצף הדוגמאות שלהם רצף הדוגמאות ב-Using Getting Started Client Creating זה ה-Address וזה היתרה של ה-Socket וזה ה-Connect ה-Connect אוקיי אז הוא צריך את ה-PTR,
Address ו-Lan זה ה-Connect מה אנחנו נתנו ל-Connect? ל-Connect נתנו Socket Address, Socket Address ו-Name Lan והם נתנו את PTR AI Address הם לא יעשו זה לא נכון לא צריך את זה מה שצריך לשים פה זה את ריזלט את הכתובת של ריזלט ריזלט הוא פוינטר ואדר וכאן את ריזלט ואת נימלן אדרלן אדרלן אבל זה קאסטד לאינס וזה בלי קאסטינג אה אבל
לא צריך אדר אז לא צריך כתובת של לא צריך כתובת של למה כי עד בעצמו F12 הוא פוינטר בעצמו למה? לסטראק.
מה זה כל זה? מה זה F12? הלאוד F12 זה הדבר הזה. Definition to force a compile error when macros are used improperly relies on visuals to perfect source annotations.
מה זה? אם אני אעשה F12 אז אין לו מה להגיד. זה כבר מעבר ל... אני יודע שהוא מצרף אם יש לו את P הוא פשוט מצרף את אלאוד כף תחתון ל-P אצלנו P זה AI אדרלן אז AI אדרלן מצורף לאלאוד עם דולר עם כף תחתון כף תחתון אני לא יודע מה זה אומר בכל מקרה זה כבר פוינטר לסטראקט סוק אדר אף 12 סוק אדר זה שני השדות האלה בסדר גמור טוב אז אם אני מנסה להחזיר אותו הוא יזעק
אז בואו נגיד לו התחל מחדש נחכה לו יופי יש שגיאות לינקר הוא אומר check for insufficient disk space invalid path for insufficient privilege כמו שה pdb writing to program database קובץ pdb בואו נעשה להגיד לו ריבילד נראה אם זה יעזור אם לא נעשה את הוויז'ול סטודיו מחדש אבל בילד סקסידר זה בסדר אז בואו נגרר את זה קצת יש בריק פוינט
ונריט יפה וקונקט אפס מה זה אומר אף נשאר אותו ערך נראה שהפעם זה דווקא הצליח או יפה הצליח להתחבר לשרת בברק היינו אמורים עכשיו לראות את זה ועכשיו עכשיו הוא הולך לשלוח לו משהו והשרת קיבל את זה.
הוא לא מראה לי אותו, למה? בוא נגיד לו add watch, not found, הוא כבר משום מה כאילו ויצא החוצה, זה שורה מיותרת.
יופי, אבל מבחינתו הוא הצליח לשלוח את זה לשרת בווארק. אז הדבר הבא זה לכתוב סרבר משלנו ושהם ידברו אחד עם השני.
השאלה היא האם נשים את הסרבר כאן, אם לשים את הסרבר בסלושיון נפרד. סרבר כאן. אז זה בעצם הקליינט. אז אנחנו באים, אני, אדי, אפשר, אה, אפשר לעשות כי סיימנו.
New project. ובואו נצמצם כדי שזה יהיה ברור. Other languages, visual C++, מי 32, Console Application, וזה יהיה הסרבר 01.
הניסיון הראשון לכתוב סרבר, בואו נגיד לו אוקיי. וכמובן נגיד לו שהוא נקי, נקי. אין בו ולא כלום שום דבר console application טהור בלי כלום יפה ועכבר ימני add new item וזה יהיה c++ ונקרא לו main ונגיד לו add יפה אז בואו נתחיל אז דבר ראשון זה void main פתח סגור פתח סגור עכבר ימני ובילד
בואו נראה שזה מתקמפל יפה מאוד בואו נהפוך אותו לסטארט-אפ כדי שנוכל להריץ אותו סט סטארט-אפ או לוחצים על A ואז הוא נהיה המתחיל אז נקווה יכול לדבק אותו האנטר לא עובד לי למה האנטר לא עובד בואו נסגור ונפתח אותו שוב והאנטר לא עובד האנטר לא עובד איפה האנטר לא עובד בכל מקום בואו נוטבד האנטר עובד זאת
אומרת הוויז'ל סטודיו נפגע מה לגבי כאן כאן enter גם לא עובד, כאן enter לא עובד. הקלדה כן, enter לא. אז בואו נסגור, נגיד לו לא לשמור את ה-H, ונחכה ל... גם זה אמור להיסגר.
למה זה? כי פתחתי את ה-MSDN מתוך ה-Visual Studio. ה-MSDN נולד מ-F1. נורא מוזר. בואו נסגור גם אותו, ונפתח Visual Studio, ו-Networking 01, ו-double-click, enter, ו-enter, enter.
מה שאני אבל רוצה זה את זה לשנות ל-client f2 client01 ונראה לי שזהו בואו נראה איך זה נראה הנה פה במסלניס נמצאים הקבצים ברקורדינג networking networking01 זה ה-sln אבל יש פה תיקייה שנקראת networking01 והיא מכילה את networking01 project זה לא מבחינת מערכת הקבצים זה לא השתנה לא בסדר שיהיה ככה טוב אז סרבר אז בואו נעשה בואו נכתוב קונקט
ואף אחד יפה וסינק וצמצם צמצם יוזינג גטינג זה היה קליינט ועכשיו הסרבר אז creating a socket for the server אוקיי אז איך בונים סרבר בואו נראה מה הם אומרים פה Creating a socket for the server.
After initialization, a socket object must be instantiated for use by the server. To create a socket for the server. The get-adder-info function is used to determine the values in the sock-addr structure.
מה זה אומר? port addr info זה נראה די דומה. כן, הם די דומים. get addr info. Resolve the local address and port to be used by the server.
סרבר צריך לברר בעצמו מה ה-IP שלו. הוא יודע את השם של עצמו, הוא לא יודע את ה-IP של עצמו. אוקיי.
חביבה שאתה מפעיל. ו... יצירה של סוקט, זה נראה מאוד דומה, רק הדבר הבא זה ביינדינג במקום קונקטינג. ביינדינג זה הפנייה לכרטיס הרשת והאמירה לו שהפורט הזה, אני מקשיב עליו.
סדר, דטי ציפי ליסנינג סוקט, יפה. פה אנחנו מדברים עם כרטיס הרשת ומציינים שמעתה כל הפניות מבחוץ לפורט המסוים הן עבורנו. ואז ליסנינג, ואז אנחנו ממתינים לפניות של התחברות.
ליסנינג אומר תמתין להתחברויות. אקספטינג זה למשוך התחברות אחת. ברגע שהיא, כן, אקספט היא ממתינה, היא תוקעת מה שנקרא, היא בלוקינג, היא חוזרת שכבר יש ביד קליינט שהתחבר.
יש לנו ביד קליינט שהתחבר, עם סוקט אחר, זה לא הסוקט הזה, זה הסוקט שעליו אנחנו מקשיבים להתחברויות, קליינט מתחבר ונפתח סוקט אחר שעליו אנחנו מדברים איתו.
הקליינט ידבר מעכשיו לפורט של הסוקט החדש, פורט נבחר על ידי כרטיס הרשת, לא על ידינו, פורט של התקשורת עצמה. זה מכיל את הפורט עבור ההתחברות, זה קצת מבולבל, זה יש פה פורט של התחברות אחרי שיש כבר התחברות התקשורת היא על פורט אחר זה כבר יהיה פורט אחר יפה ואז Receiving וSending זה אמור להיות זהה לחלוטין לאיך שאנחנו עובדים לקוד
שלנו ב-Client שכתבנו התנתקות אמורות להיות שתי התנתקויות אחת עבור ה-Client Socket אבל השנייה עבור ה-Connect Socket שני סוקטים שדי לא קשורים אחד לשני זאת אומרת אני יכול לסגור את הסוקט את ה-Connect רק סוקט כדי לא להקשיב יותר להתחברויות אבל עדיין הסוקט הזה ימשיך לתפקד אין שום קשר ביניהם לדעתי
וזה ה-complete client and server code יפה אז בואו נראה creating a socket for קודם כל צריך ליצור סוקט יצירת סוקט זה על ידי קריאה לפונקציה סוקט סוקט יוצרת לנו סוקט ובסוקט צריך להעביר את ה-result שהחזיר לנו גט אדר אינפו אז דבר ראשון זה גט אדר אינפו אז בוא נקרא גט אדר אינפו נכון קונטרול רווח וזה לא עושים כלום אז בואו נוסיף כמה דברים
אז אינקלוד איזה יש אני חושב