פרוטוקול TCP

  • הוסף לסימניות
  • #1
אני משתמשת בפרוטוקול tcp אבל יש בו פונקציות ש"נתקעות" כמו read. שיושב וממתין עד בא גואל.
אני רוצה שההמתנה תהיה מוגבלת בזמן והמערכת לא תתקע.

ועוד שאלה :
הלקוח ביקש שהתקשורת עם היישום תהיה דרך HTTP על הממשק המקומי.
דוגמא :
PHP:
 http://127.0.0.1/set?<param_name>=<value>
הוא רוצה פרוטוקול TCP

לא כ"כ הבנתי מה זה ה http הזה.

תודה לכולם
 
  • הוסף לסימניות
  • #2
הממ שאלה מאוד מבלבלת. . . באיזה שפה את כותבת את הפונקציה שנתקעת כמו - READ?
C# ? C++ ? JAVA, מה הכוונה שאת משתמשת ב TCP ? האם את פותחת SOCKET ?

ה HTTP זה סך הכל פרוטוקול העברת מידע כמו שאר הפרוטוקולים שהוא משמש בעיקר העברת קבצי HTML לרוב פרוטוקול HTTP יושב על פורט 80, או 443
וה HTTP נמצע על ה TCP.

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

ככל הנראה ע"פ דוגמת הקוד הלקוח רוצה סה"כ גישה לשרת לוקאלי דרך מטודה GET של פרוטוקול HTTP היושב על גבי TCP.

שפתרון קל ומהיר זה PHP או NODE JS
 
  • הוסף לסימניות
  • #3
או perl או פייתון או asp.net או כל שפת ווב אחרת.
 
  • הוסף לסימניות
  • #4
אתם ממש צודקים.

אני אתחיל בשאלה אחת.

נכתב ב c++
מדובר באפליקציה שהיתה אמורה להיות פשוטה, המשתמש משנה פרמטרים, לוחץ set והתוכנה שומרת את הפרמטרים שהוא שינה בפונקציה מקומית פשוטה.
כגון:
PHP:
on_btn_click(){
param1=line_edit1.text();
param2=line_edit2.text();

}

עד כאן אני מקווה שמובן.
ככה עשינו עד היום.
אבל הלקוח דרש הפעם, שכשלוחצים על set (לדוגמא) או כשרוצים לקבל אינפורמציה להשתמש בתוך האפליקציה בפרוטוקול tcp ואני יביא לכם את בקשתו המדוייקת:

Upon system start two processes will start running, the application process and the GUI process. The GUI will start with the initial start screen.
Changing value’s in the GUI will cause to Send the new info to the Application when The arrow is press to move back.
The GUI will communicate with the application via http on the local interface.
Multiple Parameters is supported by using “;” between
There will be 3 major ways of communication messages:
1. Get a param: via http://127.0.0.1/get?<param_name>;[<param_name>]
2. Set a param: via http://127.0.0.1/set?<param_name>=<value>
3. Get all Parameters: via http://127.0.0.1/get?all

We will describe the general possible answers for “get” and “set”, and then list a table of all the parameters , with their possible values, and their effect of the GUI screen.

תודה לכ-ו-ל-ם :):):)
 
  • הוסף לסימניות
  • #5
תיקון טעות:

זה שני תוכניות נפרדות, תוכנית אחת היא צד ה-server
תוכנית שניה שני הוא client
וכל השאר כמו בשאלה הקודמת:
פרוטוקול tcp ויישום http.
אני צריכה הסבר במיוחד לגבי הhttp .

בינתתים אני עושה פרוטוקול tcp...
אפשר לענות גם אם אני מכובה...

תודה
 
  • הוסף לסימניות
  • #8
אני אנסה להסביר בצורה פשוטה..
מה זה תקשורת אינטרנט?? רצף של ביטים שיוצא ממחשב אחד ויש בו רישום של כתובת מוצא כתובת יעד ופורט (מספר בין 0-65000) מוצא ופורט יעד המטרה של הפורט לומר למחשב המקבל לאיזה תהליך החבילה שהגיעה שייכת (פתחתם שני מיילים ביחד הגיע עדכון למערכת וגלשתם באינטרנט באותו זמן)...
יש פורטים שנקע להם תפקיד קבוע לדוגמא פורט 80 שיך לתקשורת WEB
לדוגמא שרת web מקבל פניה בפורט 80 הוא מבין שמדובר בבקשה למידע מאתר האינטרנט שהוא מחזיק... אבל אם הפניה תבוא בפורט 443 הוא יבין שהבקשה מוצפנת ויתחיל תהליך של אימות
לשאלתכם לגבי HTTP זו הצורה שבה מבקשים את המידע מהשרת (עמוד שלם , שורה כלשהיא או העלאה לשרת)
לגבי הTCP ... בתקשורת יכול להיות מצב שבו אני מעוניין לדעת האם המידע ששלחתי הכן הגיע תקשורת כזו זה TCP כל כמה חבילות שנשלחו הצדדים מאמתים את החבילות שהגיעו אם הכל תקין זמן האימות גדל אם לא זמן האימות קטן והחבילות נשלחות שוב ... בניגוד לUDP שמשמש להעברת שידורים חיים לדוגמא שאז ממש לא מעניין אותי החבילה שאבדה בדרך ולכן השולח והמקבל לא מאמתים הגעת חבילות...
תהליך הTCP כולל שלושה שלבים בראשון אני פונה לשרת ליצירת תקשורת בניינו הוא עונה לי שהוא קיבל את הבקשה שלי לתקשורת ואז אני שולח לו הודעה על התחלת התקשורת מרגע זה והלאה כל אחד מהצדדים מקצה מקום בRAM עבור התקשורת עם הצד השני. בדרך לאחר 30 שניות שלא עוברת חבילה התקשורת נסגרת ..

למזלכם כל זה רק תיאוריה בפועל את בסך הכל צריכה לפנות למתודה שעושה את תהליך יצירת הקשר ושולחת את הנתונים שלך
ובצד השני להרים APP WEB שתאזין לפורט 80 ותענה על הבקשות בהתאם...
 
  • הוסף לסימניות
  • #9
על פניו, לא הייתי מרים סתם אפליקציה בפורט 80. שווה להשתמש בתשתית קיימת של שרת.
כמו APACHE או IIS וכו' מתוך סיבה אחת - אתם רוצים לנצל מקסימום את השרת ואם הפורט 80 יהיה שייך לאפליקציה אחת, אז כל הפניות לפורט ילכו לאפליקציה ולא תוכלו לנצלה.

אם הדרישה היא ב C++ סביר להניח שאתם תכתבו CGI

ראה:
http://www.cs.tut.fi/~jkorpela/forms/cgic.html
http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm

בנוסף המימוש של הCLIENT:
זה בעצם שליחת "GET" (מטודה עם סימן שאלה) - http://www.cplusplus.com/forum/unices/58519/

וזה לקבל נתונים מURL, אפשר להשתמש עם ספרייה שנקראת CURL:
http://www.dreamincode.net/forums/topic/216602-possible-to-download-text-from-a-web-page/
 

פרוגבוט

תוכן שיווקי
פרסומת

פוסטים חדשים שאולי לא קראת....

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

מעכשיו, תהיו הראשונים לקבל את כל העדכונים, החדשות, ההפתעות בלעדיות, והתכנים הכי חמים שלנו בפרוג!

לוח מודעות

הפרק היומי

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


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה