java תקשורת peer to peer ברשת האינטרנט. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

java תקשורת peer to peer ברשת האינטרנט.


1_AviV

Recommended Posts

שלום.

אני עובד כרגע על משחק multiplayer. או יותר נכון מחפש כלים כדי לבנות משחק כזה.

אחד הכלים שנתקעתי בלמצוא אותם זה טכנולוגית peer to peer כמו socket.

ניסיתי להשתמש בsocket וזה עובד טוב ברשת LAN.

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

באיזה שיטה כדי לי להשתמש?

קישור לתוכן
שתף באתרים אחרים

זה אפשרי באמצעות טכניקה שנקראת hole punching. הרעיון הוא כזה: מחשב א' רוצה לפתוח את פורט 2000 בשביל שמחשב ב' יתחבר אליו. אז הוא מנסה להתחבר למחשב ב' בפורט כלשהו (נניח 4000) אבל מכריח את התוכנה להשתמש בפורט המקומי 2000 (אם לא בוחרים פורט מקומי, אז נבחר אחד באקראי). הראוטר רואה את החיבור הזה ויוצר רשומה כזו בטבלת ה-NAT: מחשב א' מחובר בפורט 2000 למחשב ב' בפורט 4000.

עכשיו, מחשב ב' מנסה להתחבר לפורט 2000 במחשב א', עם הפורט המקומי 4000. כיוון שהראוטר של מחשב א' כבר מכיר את החיבור הזה, הוא ייתן לחיבור להתרחש.

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

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

קישור לתוכן
שתף באתרים אחרים

OK.אז אחרי שאני יצליח להריץ את זה על אותו מחשב אני ינסה באמת לשנות את זה.

אם בשביל הבדיקה שתי המחשבים נמצאים אצלי[ומחוברים לרשת LAN אחרת] אני יכול פשוט להזין את הIP ידנית כן?

קישור לתוכן
שתף באתרים אחרים

עדכון: חשבתי על זה קצת וכנראה אני ינתוש את ה-socket וישתמש ב-api המוכן של google play game.

https://developers.google.com/games/services/common/concepts/realtimeMultiplayer

זה לתת למישהו לכתוב את הקוד במקומי אבל זה חוסך לי את הצד שרת, מערכת יוסרים (זה משתמש בגוגל+), ועוד הרבה דברים שאם אני יכתוב בעצמי אני לא יסיים עם זה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...