נשלח בתאריך: 16 January 2007 בשעה 17:51 | | IP רשוּם
|
|
|
|
שלום לכולם!
אני בונה אפילקציה בג'אווה המצריכה שימוש ב- Non-Blocking Sockets.
לפי מה שהבנתי הסוקטים הנ"ל יכולות לשלוח ולקבל רק ByteBuffer.
במידה ואני רוצה לשלוח סתם מחרוזת אז אפשר לבצע המרה פשוטה ל- Byte ואז לשלוח.
אבל באפליקציה שלי המצב הוא יותר מסובך. אני צריך לשלוח מבנים אחרים (מחלקות) דרך
אותה תקשורת.
לכן, אני צריך דרך להמיר את המחלקות שאני שולח לבתים, ולהיפך, להמיר את הבתים
בחזרה למחלקות. הדרך המגעילה והרעה מאוד מבחינה תכנותית היא לעשות המרה של המבנה בעזרת toString() ואז להמיר לבתים. דרך זאת לא טובה מהרבה סיבות (כמו במידה ואני משנה את המבנה וכד').
לכן, רציתי לשאול כיצד באמת ממירים כל מבנה לבתים ומבתים.
כל המבנים שאני שולח יורשים ממחלקת בסיס בשם Notice (שמממשת את Serializable).
במידה והיה מדובר ב- Blocking Sockets אז היה אפשר להשתמש ב- ObjectInputStream & ObjectOutputSteram(). אבל לפי מה שהבנתי, אי אפשר להשתמש במחלקות אלו ב- Channels.
אודה לכם מאוד אם תחזירו לי תשובה נוחה לבעיה זאת.
אלירן.
|