טיפול ב- java.net.ConnectException

1. הקדמה

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

2. מה גורם java.net.ConnectException

ה java.net.ConnectException יוצא מן הכלל הוא אחד החריגים הנפוצים ביותר של Java הקשורים לרשת. אנו עשויים להיתקל בו כאשר אנו מקימים חיבור TCP מיישום לקוח לשרת. מכיוון שזה חריג מסומן, עלינו לטפל בו כראוי בקוד שלנו ב- נסה לתפוס לַחסוֹם.

ישנם גורמים אפשריים רבים לחריג זה:

  • השרת שאליו אנו מנסים להתחבר פשוט לא מופעל ולכן איננו יכולים להשיג חיבור
  • שילוב המארח והנמל שאנו משתמשים בו כדי להתחבר לשרת עשוי להיות שגוי
  • חומת אש עשויה לחסום חיבורים מכתובות IP או יציאות ספציפיות

3. תופס את החריג בתכנות

בדרך כלל אנו מתחברים לשרת באמצעות תכנות java.net. שקע מעמד. כדי ליצור חיבור TCP, עלינו ודא שאנחנו מתחברים לשילוב המארח והיציאה הנכונים:

מארח מחרוזות = "localhost"; יציאת int = 5000; נסה את {Socket clientSocket = שקע חדש (מארח, יציאה); // לעשות משהו עם שקע clientSocket.close שנפתח בהצלחה (); } לתפוס (ConnectException e) {// שילוב מארח ויציאה לא תקף e.printStackTrace (); } לתפוס (חריג e) {e.printStackTrace (); }

אם שילוב המארח והיציאה שגוי, שֶׁקַע יזרוק א java.net.ConnectException. בדוגמת הקוד שלנו לעיל, אנו מדפיסים את מעקב הערימה כדי לקבוע טוב יותר מה משתבש. אין מעקב אחר מחסנית גלויה פירושו שהקוד שלנו התחבר בהצלחה לשרת.

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

4. בדיקת חיבורים עם ה- CLI

דרך ה- CLI אנו יכולים להשתמש ב פינג פקודה לבדוק האם השרת שאליו אנו מנסים להתחבר פועל.

לדוגמה, אנו יכולים לבדוק אם שרת Baeldung מופעל:

פינג baeldung.com

אם שרת Baeldung פועל, עלינו לראות מידע על חבילות שנשלחו והתקבלו.

PING baeldung.com (104.18.63.78): 56 בתים נתונים 64 בתים מ 104.18.63.78: icmp_seq = 0 ttl = 57 זמן = 7.648 ms 64 בתים מ 104.18.63.78: icmp_seq = 1 ttl = 57 זמן = 14.493 ms

Telnet הוא כלי שימושי נוסף של CLI שנוכל להשתמש בו כדי להתחבר למארח או לכתובת IP מוגדרת. בנוסף, אנו יכולים גם להעביר יציאה מדויקת אותה אנו רוצים לבדוק. אחרת, ישמש את יציאת ברירת המחדל 23.

לדוגמה, אם אנו רוצים להתחבר לאתר Baeldung בנמל 80, נוכל להפעיל:

80. טלנט baeldung.com

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

5. מסקנה

במדריך מהיר זה, דנו בחריג הנפוץ של רשת Java, java.net.ConnectException.

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

כמו תמיד, הקוד המוצג במאמר זה זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found