ABA


"בניתי צ'אט בסי, עם סוקטים כמובן. מבקש חוות דעת על הקוד."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #11543 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11543
SkateMan

   23:08   15.12.04   
אל הפורום  
  בניתי צ'אט בסי, עם סוקטים כמובן. מבקש חוות דעת על הקוד.  
 
   https://rotter.name/User_files/nor/41c0a7541a614631.txt
זה הקוד!
הקוד בנוי בשפת סי. שימוש בסוקטים. ממשק קונסול. התוכנית עובדת!
מה שאני מבקש זה שתציצו בקוד ותביעו חוות דעת.
ז"א אם אפשר לייעל את הקוד איך שהוא. לצמצם בקוד. משהו לא בסדר מבחינת תקינות. עיצוב קוד גם. כל מה שעולה לראש שאפשר לשפר בקוד.

תודה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  יש מצב אתה מעלה את הקובץ Gold Dragon 16.12.04 00:09 1
  לא יכול להיות. איזה קומפיילר? שלי VC++ .NET SkateMan 16.12.04 06:38 2
  לפי מיטרב ידיעתי the one64 16.12.04 08:06 3
     the one64 כנס מהר... SkateMan 16.12.04 11:51 4
  נחמד ... אופירוש 24.12.04 23:31 5
     כנס אופיר.. זה Skateman אני פשוט אצל חבר... Ryu 25.12.04 01:57 6
         מצחיק שאתה שואל ... אופירוש 25.12.04 18:24 7
             כנס רגע אופירוש.. Ryu 26.12.04 06:53 8
                 לא נורא ... אופירוש 26.12.04 20:04 9
                     כנס... Ryu 27.12.04 06:55 10
                         אמממ ... אופירוש 27.12.04 23:59 11
                             אמממ Ryu 28.12.04 06:54 12

       
Gold Dragon

   00:09   16.12.04   
אל הפורום  
  1. יש מצב אתה מעלה את הקובץ  
בתגובה להודעה מספר 0
 
   יש מצב אתה מעלה את הקובץ winsock2.h וגם את הקובץ c שלו..
כי אני הרצתי את זה בקומפילר ויש טעויות נראה לי בגלל שחסר לו ה dll הזה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SkateMan

   06:38   16.12.04   
אל הפורום  
  2. לא יכול להיות. איזה קומפיילר? שלי VC++ .NET  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
the one64
חבר מתאריך 13.4.04
44361 הודעות
   08:06   16.12.04   
אל הפורום  
  3. לפי מיטרב ידיעתי  
בתגובה להודעה מספר 0
 
   הפונקציה הראשית צריכה להיות בסוף אחרי כל הפונקציות.

ומתי שתבדוק תעשה לינק ל EXE ואני יבדוק איך זה עובד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
SkateMan

   11:51   16.12.04   
אל הפורום  
  4. the one64 כנס מהר...  
בתגובה להודעה מספר 3
 
   אתה יוצא מנקודת הנחה שאני לא משתמש בprototypes.
ז"א אתה צודק שכדי שהפונקציה main "תכיר" את כל שאר הפונקציות הן צריכות להיות מעליה.. אבל אני עשיתי לכל הפונקציות prototypes, ז"א רשמתי רק את ההגדרה של הפונקציה למעלה.
ואז מה שקורה זהשהפונקציה main רואה את כל הפונקציות למעלה ואז היא "מכירה" אותם.
עכשיו בטח אתה שואל למה השתמשתי בפרוטוטייפס? זה מקובל להשתמש בזה כדי שהבן אדם שמסתכל בקוד שלי יראה איזה פונקציות יש בתוכנית ולא יצטרך לחפש אותן.

אמרת "ומתי שתבדוק תעשה לינק לEXE"
מתי שאני אבדוק מה?
כמו שאמרתי התוכנית כבר עובדת...
מה שאני רוצה לבדוק זה את הקוד עצמו.. אם הוא יפה, עונה על הסטנדרטים של כתיבת קוד יפה. יעילות. וכל זה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אופירוש

   23:31   24.12.04   
אל הפורום  
  5. נחמד ...  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 24.12.04 בשעה 23:34 בברכה, אופירוש
 
טוב שהשתמשת ב - Prototypes , זה יותר קריא .

אבל זה לא C טהור ... ערבבת קצת ... אין ב - C טיפוס bool ... (אלא אם כן יוצרים ב - TypeDef מעין bool ...)

חוץ מיזה ... תעלה את הקבועים לרמת התוכנית (אפילו עדיף להשתמש ב - PreProccessor ) ולא לרמת הפונקציה .

תצמצם את ה - Main , תעביר את התפריט לפונקציה נפרדת ותשאיר שם כמה שורות בודדות .

וה - Switch שלך חצי מיותר ... למה אתה בודק את C אם אתה עושה לתו LowerCase ??

ותתן שמות נורמלים לפונקציות ולא Do.....

סה"כ תוכנית נחמדה . בהצלחה .

תוכניתן במקצועי , מבצע עבודות פרטיות , כל המעוניין לגשת בפרטי .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ryu
חבר מתאריך 31.8.03
2821 הודעות
   01:57   25.12.04   
אל הפורום  
  6. כנס אופיר.. זה Skateman אני פשוט אצל חבר...  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 25.12.04 בשעה 01:58 בברכה, Ryu
 
זה שזה לא סי טהור אני יודע...
bool זה סי++, true and false זה סי++ (כשזה באותיות קטנות זה מילים שמורות של סי++, כשזה אותיות גדולות זה define שמתכנתים בסי עשו כי פעם בסי היו משתמשים בint ושמים בפנים 0 ו1.. אז עשו להם define לTRUE and FALSE).

לגבי הקבועים.
לפי מה שהבנתי ממתכנת שזה העבודה שלו אתה יודע המבוגרים האלה..
אז עדיף להשתמש בconst מאשר define כדי לבטא ערך מסויים במחרוזת. מכל מיני סיבות. האם זה נכון?
עכשיו אתה אומר לשים אותם למעלה.. אבל לא עדיף שהם יהיו בפונקציה שהם תקפים בה? כי לא טוב להשתמש במשתנים גלובלים לא?
מה זה PreProccessor?

לגבי הswitch, כן השתמשתי ב tolower...

מחכה לתשובה..
ד"א אני הופך את התוכנית לצ'אט רב משתמשים..
עכשיו יש לי דילמה:
אפשרות א':

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

אפשרות ב':

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

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

מה דעתך?

:D:D:D:D:D::D


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אופירוש

   18:24   25.12.04   
אל הפורום  
  7. מצחיק שאתה שואל ...  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 25.12.04 בשעה 18:25 בברכה, אופירוש
 
קודם כל , לא מערבבים בין שפות .
אם אתה כותב ב - C , אז תכתוב ב - C טהור ואל תכניס אלמנטים של C++ .
דבר שני , לא התכוונתי ל - DEFINE , התכוונתי ל - TypeDef ... זה משהו אחר ...

שאתה כותב פקודות DEFINE , זה פקודות PreProccessor .
זה אומר שבזמן הקומפילציה המהדר עובר על הקוד ומחליף את כל המקומות שיש בהם Define בערכים שקבעת להם .

בקשר לקבועים , אין שום סיבה לשים קבועים ב - Scope של פונקציה .
שמים קבועים ב - Scope של התוכנית .

בכל מקרה , אתה יכול להשתמש בקבועים או ב - DEFINE , אין כמעט הבדל ביניהם , ובמיוחד לא הבדל שיכול לשנות לך משהו ...

לגבי ה - Switch ... אני יודע ששמת ToLower ...
אני אמרתי שבגלל ששמת To Lower אין שום סיבה שאתה בודק אם התו הוא C גדולה או L גדולה ... כי הם לא יכולים להיות גדולים ... הרי בשביל זה עשית ToLower ...

ולמה אמרתי שזה מצחיק ? ...
בדיוק היום מישהו מהפורום שאל אותי בדיוק אותה השאלה ב - ICQ ...

שומע רגע אני מתייעץ איתץך שניה

הצ'אט שלי הופך לרב משתמשים

עכשיו אני מתלבט איך הוא יעבוד

אפשרות א':

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

אפשרות ב':

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

ואז בעצם כל מחשב יוכל להתחבר לכל מחשב..

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

מה דעתך?

מצחיק לא ?
או ששניכם חברים שעובדים ביחד ... או שאתם עושים תחרות ...

בקיצור ... תחשבו קצת בהגיון ... מה יקרה שמשתמש מסויים יתחבר למשתמש אחר .
ואז המשתמש שהתחברו אליו מתנתק , אז הוא מנתק גם את כל אלה שמחוברים אליו .
חוץ מיזה , אין לך שום אפשרות ליצור Authorization על הצט שלך , או אפילו ניהול פשוט ...

הקיצר ... לא עושים דברים כאלו וזהו .

ד"א ... תוריד את ה - Bool ... יש דברים שלא עושים בתכנות ... זה אחד מהם ...

בהצלחה לשניכם ...

תוכניתן במקצועי , מבצע עבודות פרטיות , כל המעוניין לגשת בפרטי .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ryu
חבר מתאריך 31.8.03
2821 הודעות
   06:53   26.12.04   
אל הפורום  
  8. כנס רגע אופירוש..  
בתגובה להודעה מספר 7
 
   נראה לי שאתה מתבלבל
אני בדקתי את האותיות הקטנות...
טוב אולי לפחות בקוד המחודש... זה נראה לי ממש מוזר מה שאתה אומר...
עוד היום אני אעלה את הקוד המחודש אחרי שהוא יהיה תקין ונדבר עליו..

וכן אני יודע עוד בבוקר החלטתי שיש סרבר אחד וכולם מתחברים אליו... (כמו שעושים בדר"כ).

אבל אם אני מוריד את הbool אז אני אשתמ ב
int result;
result = TRUE/FALSE;
זה יהיה אותו הדבר ...
חייב להוריד?

ד"א הבן אדם שדיבר איתך באיסי... הוא בן אדם תותח לא ידעת

:D:D:D:D:D::D


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אופירוש

   20:04   26.12.04   
אל הפורום  
  9. לא נורא ...  
בתגובה להודעה מספר 8
 
   ערכתי לאחרונה בתאריך 26.12.04 בשעה 20:05 בברכה, אופירוש
 
בקוד שאתה העלת אז בדקת גם C גדולה וגם L גדולה ...
אם תיקנת אז מצוין .


טוב שקיבלת החלטה לעשות שרת מרכזי . (לא שהיתה לך כל כך ברירה ... )

תוריד את ה - Bool וזהו . לא עושים דברים כאלו .


ובקשר לבחור שדיבר איתי ... ילד חמוד .
קצת ממהר להתקדם עם נושאים ואז מתפספסים לו דברים , אבל בסה"כ , תן לו עוד כמה שנים ונראה לאן הוא יתפתח .

פשוט יש משהו שהרבה חבר'ה שמתייעצים איתי כל הזמן טועים לגביו .
זה לא משנה כמה שפות תכנות אתה מכיר .
אם תלמד על המון שפות , אז אתה תדע רמה בסיסית+ בכולם .

אם רק תכיר את השאר ברמה בסיסית ותתמקד באחת או שתיים , אז אתה תוכל להתמחות - כי הרי הבדל בין שפות הוא לרוב סינטקס ... (אלא אם כן זה מתודולוגיה שונה לגמרי ...)
ואף אחד לא מחפש אנשים שמכירים המון שפות , מחפשים אנשים שמתמחים בשפה מסויימת וצברו ניסיון רב בתחום .

תותח יש רק בתותחנים

תוכניתן במקצועי , מבצע עבודות פרטיות , כל המעוניין לגשת בפרטי .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ryu
חבר מתאריך 31.8.03
2821 הודעות
   06:55   27.12.04   
אל הפורום  
  10. כנס...  
בתגובה להודעה מספר 9
 
   הילד מהאיסי...
רוצה ללמוד הרבה שפות? השתגעת? אתה לא שם לב שהבן אדם מתכנת בסי כבר יותר משנה? ולא זז לשום שפה אחרת? רק שהוא למד גם סי++ בדרך כדי לראות על זה קצת. אבל הוא מתמחה בסי וזה ברור לעיין...
הוא רוצה להתמחות בשפה אחת ורק אז אולי להתחיל ללמוד עוד קצת שפות פה ושם.. רק שהוא רוצה כשהוא מסיים טוטאלית עם סוקטים אז הוא רוצה ללמוד אסמבלי כדי ללמוד דברים לעומק... אבל כמובן שהוא ימשיך לתכנת בסי..

אני אשמח אם תגיד לי באיזה נושאים הוא ממהר ומה מתפספס לו כדי שאני/הוא נוכל ללמוד...

שאלה תיכנותית:
ישך במקרה מושג איך אני יכול לבדוק אם נלחץ Ctrl+C (בקונסול) ואם כן לטפל בזה ולא לתת לו לצאת.... או שאם הוא חייב לצאת אז לפחות לטפל בזה לפני (שזה לנקות מה שצריך)...?

ואני אעלה את הקוד בקרוב

:D:D:D:D:D::D


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אופירוש

   23:59   27.12.04   
אל הפורום  
  11. אמממ ...  
בתגובה להודעה מספר 10
 
   אני לא זוכר נושאים ספיציפיים , זה הרושם שקיבלתי ממנו , ומהשאלות שלו שלפעמים היו יותר מידי בסיסיות לעומת הנושא שהוא עבד עליו .

בקיצור ... אין מה למהר ... זה לא כמות הספרים שקראתם ולא כמות השפות ש"למדתם" ... זה רק הזמן שצברתם , והניסיון בפתרון בעיות מורכבות בפיתוח .

לשאלתך , שלוחצים Ctrl+C , זה בעצם כמו ללכת ל - Task Manager ולסגור תוכנית מסוימת .
הרי תוכנית שרצה ב - Console , היא Procces , בדיוק כמו כל תוכנית אחרת .

ז"א , שה - Ctrl+C / לחיצה על End Task במנהל המשימות , הוא בעצם פעולה שמתבצעת ברמת מערכת ההפעלה . ולכן אין שום אפשרות למנוע ממערכת ההפעלה לסגור את ה - Procces המבוקש .
כמובן שישנם יוצאים מן הכלל , ולדוגמא , תוכל לראות כל מיני מוצרים קריטיים של Microsoft ,
שממשים מין Interface שמוקפץ בעץ ניסיון "סגירת" ה - Procces , ויש לתוכניתן אפשרות להחזיר שם Cancel ולבטל את סגירת התהליך .

אבל לא משנה מה ... אם תרצה לסגור Procces מסוים אתה תצליח ולא משנה מה הוא יעשה בקוד שלו . (אלא אם כן הוא service ... ואז ניתן לעשות דברים אחרים ... )

לשאלתך השניה ... ברגע שתהליך "עף" ע"י מערכת ההפעלה , בעצם מתבטלים כל הקישורים אל כתובות הזיכרון שלו -> ז"א שמבחינת מערכת ההפעלה , ה - Procces לא קיים יותר , וכל המקומות שהזיכרון שלו שכן בהם , אין להם משמעות , והם ידרסו ע"י ה - Procces הבא שיטען .

בקיצור ... מה שעף , עף ! ואין לך מה לדאוג לזה ... סמוך על מערכת ההפעלה , שאם היא כבר העיפה אותך , אז היא תעיף אותך עד הסוף .

בהצלחה .

תוכניתן במקצועי , מבצע עבודות פרטיות , כל המעוניין לגשת בפרטי .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ryu
חבר מתאריך 31.8.03
2821 הודעות
   06:54   28.12.04   
אל הפורום  
  12. אמממ  
בתגובה להודעה מספר 11
 
   לגבי השורות האחרונות שלך...
מה שעף עף אבל הסוקט לא יסגר... אני צודק?
אל תדאג אחי הבן אדם ההוא חכם מאד, עשה את כל הדרך שלו לבד והוא יודע הרבה, ואני לא יודע אם אתה יודע בן כמה הוא..

לגבי Ctrl+C אז הבנתי שאני לא אוכל לדעת אם זה נלחץ ובכלל לא לפעול בהתאם נכון?

:D:D:D:D:D::D


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net