לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #6  
ישן 12-06-2010, 13:01
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 4 שנכתבה על ידי hellfrost שמתחילה ב "זה דרך מעולה לחנוק את הפרוסס,..."

הפלטופרמה והשפה שלך זה ג'אווה.
האמת שאני לא מכיר JAVA אני מכיר C#, וC++

אבל זה דומה בכל השפות, יש API אחד מרכזי שנקרא ברקלי סוקטס http://en.wikipedia.org/wiki/Berkeley_sockets

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

בכל מקרה הפקטות שנכנסות נשמרות בתור גם ברמת מ"ע ההפעלה, וגם ברמה של הJVM אז אתה לא תאבד פאקטות...
בד"כ המימושים היותר מוצלחים לשרת TCP נראים ככה: יש סוקט אחד לקבלת לקוחות, תרד או כמה תרדים שמגיבים להתחברויות עליו, תרד אחד שעושה עליו תחזוקה(מטפל בלקוחות שהתחברו ועברו את הזמן שהוקצב להם לפעילות) לקוח אחרי שהוא מתחבר מקבל ACCEPT לסוקט נפרד, ויש קבוצה של תרדים- קצת יותר מכמות המעבדים על המכונה(בד"כ כפול) שמטפלת בשליחה וקבלה של מידע מהלקוחות.
עכשיו הרעיון בכל זה הוא ליצור מעט תרדים אוטונומיים שלא תלויים אחד בשני, ככה אין לך נעילות, ויש לך מעט מאוד קונטקסט סוויצ'ינג
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 12-06-2010, 15:24
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 7 שנכתבה על ידי stomer שמתחילה ב "תודה רבה על התגובה. אך אם..."

לא מכיר מספיק את JAVA אבל בלינוקס יש כמה אפשרויות.
אפשרות אחת היא במקום לעשות accept לעשות select...
צור לך pipe כך שכל thread יוכל לכתוב אליו וה-thread הראשי יוכל לקרוא ממנו.
במקום לעשות accept אפשר לעשות, עכשיו, select על ה-file descriptor של ה-socket וגם של ה-pipe ולחכות שאחד מהם יחזור.
אם חזר כי ה-socket מוכן לעשות מיד accept (ואז זה לא יחכה בכלל) ולחזור לעשות select.
אם חזר כי משהו נכתב ל-pipe, פשוט לקרוא את הפקודה מה-pipe ולבצע אותה (במקרה שלך זה יכול להיות quit שגורם לסגירה).

לא יודע כמה Java מכיר את ה-API של לינוקס מהבחינה הזו או כמה כלים דומים ה-JVM מכילה...
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 12-06-2010, 15:31
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 7 שנכתבה על ידי stomer שמתחילה ב "תודה רבה על התגובה. אך אם..."

שאני אבין אתה רוצה שקליינט יוכל להורות לשרת עצמו להיסגר?

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

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

בכל מקרה אתה צריך פתרון שהוא ספציפי לג'אוה, גישה לUNIX SOCKET זה לא ממש אופציה...

נערך לאחרונה ע"י hellfrost בתאריך 12-06-2010 בשעה 15:37.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 12-06-2010, 15:40
צלמית המשתמש של stomer
  משתמש זכר stomer stomer אינו מחובר  
 
חבר מתאריך: 10.04.07
הודעות: 2,060
בתגובה להודעה מספר 10 שנכתבה על ידי hellfrost שמתחילה ב "שאני אבין אתה רוצה שקליינט..."

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

זאת הייתה הכוונה שלי ב
ציטוט:
במקור נכתב על ידי stomer
האם להעביר לכל אחד מהבנים מצביע של האב, ואז הם יעשו לו interrupt?

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


ציטוט:
במקור נכתב על ידי hellfrost
לגבי הסוקטים האחרים אתה יכול לעשות להם SHUTDOWN, ולפי הפרמטרים שאתה מעביר הם יפסיקו לקבל\לשלוח מידע, ויסיימו עם המידע שיש להם. או שאתה אפליקטיבית יכול להודיע לתרדים שמטפלים בלקוחות שאתה רוצה לעשות איזה לוגיקה של סיום ואחרי זה לסגור אותם.
בגדול תקשורת בין תרדים מתבצעת ע"י אובייקטים משותפים ואמצעים לסנכרון - מיוטקס, ספין לוק וכאלה

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 01:09

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר