דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. קבלת ה"URL המלא" בחיבור TCP בGO

קבלת ה"URL המלא" בחיבור TCP בGO

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 2 כותבים 166 צפיות 1 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    כתב ב נערך לאחרונה על ידי
    #1

    אני רוצה להתחבר לשרת TCP עם בקשה כזאת
    tcp:127.0.0.1:8080/play?file=1
    ושאוכל לפרק את הפרמטרים בשרת למשתנים.

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

    מייל: nigun@duck.com

    yossizY תגובה 1 תגובה אחרונה
    0
    • nigunN מנותק
      nigunN מנותק
      nigun
      כתב ב נערך לאחרונה על ידי
      #2

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

      מייל: nigun@duck.com

      תגובה 1 תגובה אחרונה
      1
      • nigunN nigun

        אני רוצה להתחבר לשרת TCP עם בקשה כזאת
        tcp:127.0.0.1:8080/play?file=1
        ושאוכל לפרק את הפרמטרים בשרת למשתנים.

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

        yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי
        #3

        @nigun אמר בקבלת ה"URL המלא" בחיבור TCP בGO:

        אני רוצה להתחבר לשרת TCP עם בקשה כזאת
        tcp:127.0.0.1:8080/play?file=1

        זה לא קיים ב-TCP. פרוטוקול TCP פותח ערוץ פשוט, אין פרמטרים.
        נראה לי שבפרוטוקול fastAGI הפרמטרים נשלחים בתחילת ההתקשרות דרך ערוץ ה-TCP.

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        nigunN תגובה 1 תגובה אחרונה
        2
        • yossizY yossiz

          @nigun אמר בקבלת ה"URL המלא" בחיבור TCP בGO:

          אני רוצה להתחבר לשרת TCP עם בקשה כזאת
          tcp:127.0.0.1:8080/play?file=1

          זה לא קיים ב-TCP. פרוטוקול TCP פותח ערוץ פשוט, אין פרמטרים.
          נראה לי שבפרוטוקול fastAGI הפרמטרים נשלחים בתחילת ההתקשרות דרך ערוץ ה-TCP.

          nigunN מנותק
          nigunN מנותק
          nigun
          כתב ב נערך לאחרונה על ידי
          #4

          @yossiz
          סתם לידע הכללי
          בHTTP זה נשלח בפרמטר נפרד דרך הערוץ?

          מייל: nigun@duck.com

          yossizY תגובה 1 תגובה אחרונה
          0
          • nigunN nigun

            @yossiz
            סתם לידע הכללי
            בHTTP זה נשלח בפרמטר נפרד דרך הערוץ?

            yossizY מנותק
            yossizY מנותק
            yossiz
            כתב ב נערך לאחרונה על ידי
            #5

            @nigun אני לא מבין בדיוק את השאלה שלך.
            TCP זה פרוטוקול בינארי להקמת ערוץ התקשרות בין שתי מכונות מרוחקות. אחרי הקמת הערוץ אפשר לשלוח דרכו מה שאתה רוצה.
            HTTP זה פרוטוקול (פרוטוקול = שפה מוסכמת) טקסטואלי שמגדיר דרך לבקש/לעדכן/ליצור/למחוק וכו' משאבים משרת אינטרנט דרך ערוץ TCP. תקשורת HTTP משתמשת ב-TCP מתחתיו להקמת הערוץ והוא מעביר את ההתקשרות על גבי ערוץ ה-TCP.
            כמו"כ AGI. זה פרוטוקול טקסטואלי שמדבר מעל גבי פרוטוקול TCP.

            פרמטרים ב-HTTP נשלחים בשורה הראשונה של הבקשה, דוגמה:

            GET /some-page?some_parameter=some_value HTTP/1.1
            

            פרמטרים ב-AGI נשלחים מיד בפתיחת הערוץ בפרומט זה:

            agi_xxxx: yyyyyy
            agi_zzz: qqqqq
            

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            nigunN תגובה 1 תגובה אחרונה
            4
            • yossizY yossiz

              @nigun אני לא מבין בדיוק את השאלה שלך.
              TCP זה פרוטוקול בינארי להקמת ערוץ התקשרות בין שתי מכונות מרוחקות. אחרי הקמת הערוץ אפשר לשלוח דרכו מה שאתה רוצה.
              HTTP זה פרוטוקול (פרוטוקול = שפה מוסכמת) טקסטואלי שמגדיר דרך לבקש/לעדכן/ליצור/למחוק וכו' משאבים משרת אינטרנט דרך ערוץ TCP. תקשורת HTTP משתמשת ב-TCP מתחתיו להקמת הערוץ והוא מעביר את ההתקשרות על גבי ערוץ ה-TCP.
              כמו"כ AGI. זה פרוטוקול טקסטואלי שמדבר מעל גבי פרוטוקול TCP.

              פרמטרים ב-HTTP נשלחים בשורה הראשונה של הבקשה, דוגמה:

              GET /some-page?some_parameter=some_value HTTP/1.1
              

              פרמטרים ב-AGI נשלחים מיד בפתיחת הערוץ בפרומט זה:

              agi_xxxx: yyyyyy
              agi_zzz: qqqqq
              
              nigunN מנותק
              nigunN מנותק
              nigun
              כתב ב נערך לאחרונה על ידי
              #6

              @yossiz
              סליחה שלא הסברתי
              השאלה שלי היית בגלל שיש פונקציה לקבלת הכתובת+פורט של הקליינט או השרת, גם בלי שזה נשלח כפרמטר.
              אז תהיתי האם שייך (באופן תיאורטי) לקבל גם את שאר הבקשה?

              מייל: nigun@duck.com

              yossizY תגובה 1 תגובה אחרונה
              0
              • nigunN nigun

                @yossiz
                סליחה שלא הסברתי
                השאלה שלי היית בגלל שיש פונקציה לקבלת הכתובת+פורט של הקליינט או השרת, גם בלי שזה נשלח כפרמטר.
                אז תהיתי האם שייך (באופן תיאורטי) לקבל גם את שאר הבקשה?

                yossizY מנותק
                yossizY מנותק
                yossiz
                כתב ב נערך לאחרונה על ידי
                #7

                @nigun עכשיו אני עוד פחות מבין מה אתה שואל...

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                nigunN תגובה 1 תגובה אחרונה
                0
                • yossizY yossiz

                  @nigun עכשיו אני עוד פחות מבין מה אתה שואל...

                  nigunN מנותק
                  nigunN מנותק
                  nigun
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @yossiz
                  😕
                  לפני זה הבנתי אותי מצויין
                  אני יסביר טיפה יותר
                  בקוד הזה ניתן לקבל את הכתובת IP + פורט של הלקוח (הקוד לא מדיוק, זה רק לרעיון)

                   l, err := net.Listen("tcp", PORT)
                   
                          conn, err := l.Accept()
                      
                  log.Print(conn.RemoteAddr().String())
                  

                  אבל אי אפשר לקבל את שאר הבקשה.

                  כנראה שבפרוטוקול TCP נשלח רק הכתובת + הפורט ואולי הTimeout
                  (ככה נראה מכאן)

                  מייל: nigun@duck.com

                  yossizY תגובה 1 תגובה אחרונה
                  0
                  • nigunN nigun

                    @yossiz
                    😕
                    לפני זה הבנתי אותי מצויין
                    אני יסביר טיפה יותר
                    בקוד הזה ניתן לקבל את הכתובת IP + פורט של הלקוח (הקוד לא מדיוק, זה רק לרעיון)

                     l, err := net.Listen("tcp", PORT)
                     
                            conn, err := l.Accept()
                        
                    log.Print(conn.RemoteAddr().String())
                    

                    אבל אי אפשר לקבל את שאר הבקשה.

                    כנראה שבפרוטוקול TCP נשלח רק הכתובת + הפורט ואולי הTimeout
                    (ככה נראה מכאן)

                    yossizY מנותק
                    yossizY מנותק
                    yossiz
                    כתב ב נערך לאחרונה על ידי yossiz
                    #9

                    @nigun הפורט וה-IP הם פרטים של הערוץ ונשלחים כחלק מפרוטוקול TCP (או יותר נכון ה-IP נשלח כחלק מפרוטוקול IP שזה שכבה נמוכה יותר מ-TCP, והפורט הוא חלק מפרוטוקול TCP).

                    "שאר הבקשה" זה המידע שנשלח על גבי ערוץ ה-TCP (לא כחלק מפרוטוקול TCP).

                    להסביר יותר, בכל פקטת TCP יש את המעטפת שזה כל הפרטים שקשורים לניהול הערוץ שהם חלק מפרוטוקול TCP ויש את השדה של ה-payload, שזה המידע שאתה שולח על גבי הערוץ.
                    תפתח הקלטת wireshark ותראה את זה.

                    אפשר לקבל את הבקשה על ידי קריאת read על ה-conn

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    תגובה 1 תגובה אחרונה
                    4
                    תגובה
                    • תגובה כנושא
                    התחברו כדי לפרסם תגובה
                    • מהישן לחדש
                    • מהחדש לישן
                    • הכי הרבה הצבעות


                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום