offtopic - שאלה ב-java

offtopic - שאלה ב-java

מכיוון שיש כאן כמה אנשי java שודעים דבר או שנים בתחום אשמח לדעת מתי הייתם משתמשים במחלקה ServerSocket.
לקוח ביקש ממני לכתוב תקשורת מאפליקצית אנדרואיד לשרת ולהשתמש ב-ServerSocket.

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

תודה מראש.
 

pattos

New member
אתה לא יכול להשתמש בSS באנדרואיד

אין לך כתובת IP קבועה, ורוב הזמן אתה מאחורי NAT.
&nbsp
אם התכוונת לכתוב את השרת, אז אתה צריך להגדיר פרוטוקול מיוחד בשביל התקשורת ולכתוב במקביל את הצד של האנדרואיד כי בניגוד לפרוטוקולים אחרים, בTCP אתה פשוט מעביר מידע גולמי ולא ישויות ולכן אתה צריך לכתוב במקביל את 2 הצדדים
 

pattos

New member
כמובן, בהנחה

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

user32

Well-known member
מנהל
כשאתה צריך לקבל הודעות בדחיפה בתדירות גבוהה

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

ראיתי פרוייקטים באנדרואיד שהשתמשו בServerSocket אפילו בUDP אבל זה לא היה טלפון סלולרי אלא קופסת שליטה מבוססת אנדרואיד (כמו סטרימר בייתי) והקליינטים התחברו אליו בIP הפנימי כי כולם היו מחוברים לאותו ראוטר. לא יודע מה ההשלכות של שימוש כזה במכשיר עם סוללה.
 

user32

Well-known member
מנהל
WS זה פרוטוקול יחסית חדש

ServerSocket זו ההתחברות הישנה והטובה של סוקטים שקיים בערך מתחילת ימי האינטרנט. אין שם יותר מדי מלבד התחברות, שליחה וקבלה.

הWebSocket הוא פיצ'ר/תקן חדש שהW3C אישרו (או מאשרים) ונועד לדפדפנים לתקשר עם שרתים דרך סוקטים כולל האזנה להודעות. הוא כולל כל מיני דברים כמו אבטחה, headers וכו' שאמור להגדיר סטנדרט מסויים בתקשורת בין הקליינט לסרבר. אפשר לחשוב על זה כמקבילה לHTTP.
 

pattos

New member
WS זה בעצם תקשורת רגילה דרך socket עטופה בHTTP

מאחר וHTTP מאפשר לך רק "בקשה" ואז "תשובה", בWS אתה שולח בקשה, עובר למצב מיוחד של WS ואז משם והלאה זה כמו TCP רגיל
 

nocgod

New member
אם אתה צריך להתחבר מהלקוח לשרת

לרוב עושים את זה באמצעות איזשהו REST api שחושף השרת.
אם אתה רוצה לגרום לשרת לשלוח מידע ללקוח הדרך הכי יעילה לעשות את זה זה לשלוח ללקוח הודעת GCM שתגרום לו לעשות GET לאיזה API שחושף השרת.
הכי חשוב זה לא לעשות polling בעצמך...

https://possiblemobile.com/2013/09/push-dont-poll-how-to-use-gcm-to-update-app-data/
 

user32

Well-known member
מנהל


 
למעלה