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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 2 כותבים 164 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לnigun ב נערך לאחרונה על ידי
        #3

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

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

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

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

        nigunN תגובה 1 תגובה אחרונה
        2
        • nigunN מנותק
          nigunN מנותק
          nigun
          השיב לyossiz ב נערך לאחרונה על ידי
          #4

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

          מייל: nigun@duck.com

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לnigun ב נערך לאחרונה על ידי
            #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
            • nigunN מנותק
              nigunN מנותק
              nigun
              השיב לyossiz ב נערך לאחרונה על ידי
              #6

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

              מייל: nigun@duck.com

              yossizY תגובה 1 תגובה אחרונה
              0
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לnigun ב נערך לאחרונה על ידי
                #7

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

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

                nigunN תגובה 1 תגובה אחרונה
                0
                • nigunN מנותק
                  nigunN מנותק
                  nigun
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #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
                  • yossizY מנותק
                    yossizY מנותק
                    yossiz
                    השיב לnigun ב נערך לאחרונה על ידי yossiz
                    #9

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

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

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

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

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

                    תגובה 1 תגובה אחרונה
                    4

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

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

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