java: האם אפלט יכול להיות server?

java: האם אפלט יכול להיות server?

שלום שלום. האם ניתן לגרום לאפלט להיות ServerSocket ע"מ ליצור מצב שהשרת ידחוף דברים אל הלקוח? ואם באמת ניתן לעשות את זה, האם אפשר ליצור thread נפרד באפלט בשביל שה accept לא יתקע את הכל? האם בכלל ניתן לעשות threadים באפלטים? תודה רבה, ושנה טובה!
 

voguemaster

New member
לא יכול להיות סרבר, לא באופן רגיל

ההגבלות שמציבה ה-JVM (ספציפית ה-security manager) מונעות מ-APPLET לבצע דברים כמו BIND לפורטים במערכת שבה הוא רץ. בשביל זה הוא צריך הרשאות טובות יותר, שאפשר כמובן לבקש מהמשתמש (לא לסמוך על זה שנקבל לעומת זאת
). בקשר ל-THREAD, אני לא בטוח. לא ניסיתי ליצור THREAD חדש מתוך יישומון, אבל הניחוש שלי הוא שאי אפשר.
 
בעסה ../images/Emo13.gif

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

emissary

New member
בקשר לשם שלך

את צריך לכתוב כשואלים אותך איזה עץ לא alon אלא oak כן גם לי קוראים אלון
 
ממש לא.... ../images/Emo6.gif../images/Emo6.gif ../images/Emo32.gif

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

voguemaster

New member
תראה

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

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

gilad_no

New member
אחרי חיבור, אין בעיה

הבעיה היא רק עם יצירת הקשר הראשוני, שבה הלקוח חייב ליזום את הפנייה (בדומה לICQ). לאחר שהלקוח מחובר לשרת, השרת יכול ליזום פניות ללקוח (כל עוד הוא מחובר) ולא להמתין לבקשות של הלקוח. אתה צריך לפתוח סוקט לשרת ולהגדיר ארוע לטיפול כאשר מגיע מידע. ואז היישום ממשיך לרוץ עד שהמשתמש סוגר אותו. כאשר יגיע ארוע כלשהוא, השיגרה המתאימה תטפל בו. כמו בICQ: הלקוח מתחבר לשרת ונכנס למצב שינה. כאשר ישנו ארוע כלשהוא (הודעה, הזמנה לצ´אט), הוא מתעורר.
 
הממממ..... זה לא בעייתי-משהו?

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

gilad_no

New member
לא כ"כ,

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

voguemaster

New member
המממ בעיקרון

יש הגבלה תחת חלונות (אפילו NT), אבל ביוניקסים למיניהם אין הגבלה רשמית של סוקטים פתוחים (file descriptors).
 

DCoder

New member
במילה, כן.

As far as I know, Java applets can start several threads with no security problems. However, starting a ServerSocket is prohibited by default ( For obvious reasons ). However, there is a solution - You can sign your applet, making your applet as powerful as any other Java application. For more info, visit Java´s Security page.​
 

odstudio

New member
רק לשם אישור

אפשר ליצור applet התומך ב- multithreading בלי שום בעייה מיוחדת.
 
אם אפשר, שאלה על הsecurity.....

קראתי קצת באתר של Sun על ה security model, ונשארתי קצת מבולבל.... איפה הרישום מתבצע? יש איזשהו שרת שמחזיק רישומים של אפליקציות מאושרות וההרשאות אבטחה שלהן (בדומה לשירות ש VeriSign עושים לפקדי ActiveX)? או שפספסתי את הרעיון?
 

voguemaster

New member
אני ממליץ

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