
INVALID_SOCKET, ושם שומרים את הסוקט החדש.INVALID_SOCKET. נרשם to-do למילוי כל התאים.while true מקבלת חיבורים בלי הפסקה. בשלב הזה, אם accept נכשל, מותר להפיל את השרת כולו.הטקסט המלא של הדקות הראשונות בהרצאה «בניית חדר דיונים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב, אז אנחנו רוצים לבנות קליינט סרבר אה, סליחה, יש לנו קליינט סרבר, אנחנו רוצים לבנות סט יש לנו תית, את התשתית בשביל שט אוקיי, אז בואו נחשוב ביחד, יש לנו את הסרבר הסרבר כרגע מקבל, מקבל בן אדם אחד מקבל, רוצה אקספ, מקבל קליינט אחד נכנס ללולאה ומקבל ממנו ומדפיס בכל איתרציה את כל מה שהוא מקבל בסוף הבן אדם מתנתק או שיש תקלה ואז אנחנו
מתנתקים מהבן אדם, מדפיסים נסגר, מסיימים ונגמר הסרבר. יפה. על מנת שהסרבר לא ייגמר אז מה שאנחנו צריכים זה לולאה אבל זה לא יעזור כי אם תהיה לי לולאה אז אני בסך הכל כל פעם אקבל בן אדם, אקבל את כל מה שיש לו להגיד ואתנתק ממנו ושוב אחכה לבן אדם הבא.
זה לא עוזר לי כל פעם לחכות לבן אדם, לקבל ממנו ולהדפיס, להתנותק, ואז שוב לקבל את הבן אדם הבא. כי זה לא Chat Server, אנחנו רוצים להיות Chat Server. מה זה Chat Server?
Server של Chat? Chat Server זה שהרבה קליינטים יכולים להתחבר לשרת, וכל קליינט שכותב משהו לשרת, אז השרת מעביר את מה שהקליינט הזה כתב לכל הקליינטים האחרים.
זאת אומרת, הסרבר צריך לקבל כל הזמן קליינטים, לקבל קליינטים, לקבל, לקבל, לקבל, ואת כל הקליינטים לשמור או ברשימה משורשרת או באיזה מערך, לשמור את כל הקליינטים.
וכשאחד מהקליינטים אומר משהו, אז במקום להדפיס או בנוסף על ההדפסה, הסרבר גם אמור לעבור רשימת הקליינטים ולשלוח להם את מה שכתב הקליינט, חוץ מהקליינט שכתב, עכשיו אנחנו לא מחזירים, לא, צ'אט זה, צ'אט, צ'אט זה בדרך כלל, זה קיצור של צ'אט רום, חדר דיונים, חדר דיונים זה אומר אחד מדבר וכולם מקבלים, לא מדובר פה על זוגות או על חדרים,
בהמשך אם נרצה נעשה חדרים, אבל זה כבר, זה כבר פחות מעניין, מה שאני רוצה כרגע זה לבנות מערכת תקשורת אחד לרבים, כל אחד יכול לדבר וכולם קולטים, יפה, אז איך אנחנו נעשה את זה? אז בואו נסתכל מה יש לנו עד עכשיו, אז אולי טיפה נגדיל את זה כדי שנראה את סוף המשפט ובואו נלך להתחלה, אז יפה.
אז יש לנו בהתחלה סטארט-אפ, אוקיי, נחמד מאוד, ואז get adder info, יפה מאוד, יצירה, סליחה, של, אתה יודע, של סוקט, התחברות לסוקט, זאת אומרת, חיבור הסוקט לכתובת על השרת, ותחילת ההקשבה על הסוקט, יפה וחילוץ של הקליינט הראשון ואחרי זה הקליינט השני ואחרי זה עוד ועוד קליינטים בקיצור את
זה אנחנו צריכים בעצם לעשות לנצח כל פעם לקבל קליינט ולהוסיף אותו לרשימה כשהוא מתנתק צריך להסיר אותו מהרשימה אוקיי אז מה שאנחנו צריכים זה בעצם מערך של סוקטים פה נגדיר שיש לנו עשרה סוקטים אפילו הייתי אומר שלושה סוקטים כדי לראות איך אנחנו מתמודדים עם מצב שכבר אין לנו מקום או שנעשה משהו דינמי, נעשה או רשימה משורשרת
או מערך שכל פעם נכפיל אותו, נכפיל את הגודל שלו, וזה כבר פחות מעניין. דבר ראשון, בואו נגדיר, אז נגדיר מערך וניכנס פה ללולאה וכל פעם שמישהו מתחבר נוסיף למערך את הקליינט.
כשמישהו מתנתק נסיר. כשמישהו מתחבר נכניס לתא הפנוי הראשון את הסוקט שזה התא קיבלנו. אוקיי, אז בואו נעשה את זה. אז אני אגדיר פה מסוג סוקט את קליינט.
זה יהיה מערך מצידי בגודל אפילו שלוש, קטן מאוד, כדי ש... המטרה שלי זה לחוות בהקדם את מקרי הקצה כדי לראות אם אנחנו מתמודדים נכון עם מקרי הקצה. אני לא רוצה להגדיר עשרת אלפים ורק לגלות אצל הלקוח שלי שיש לי בעיה.
אני רוצה לגלות בזמן פיתוח אם יש לי אז את הבעיה. אוקיי, אז יש לי מערך. את המערך, כמו כל המערכים ב-C וב-C++, אני אאפס.
יפה, אז יש לי שלושה. עכשיו סוקט, אם אתם זוכרים, אז זה בעצם int, f12, תמיד טוב להיזכר. זה בעצם unsigned int מצוין. יפה.
אז את האקסט אנחנו נעשה בלולאה while true אנחנו ב-c++ זו מילה true מוגדרת יפה אבל