Presentation is loading. Please wait.

Presentation is loading. Please wait.

החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו.

Similar presentations


Presentation on theme: "החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו."— Presentation transcript:

1 החיים המקוונים Networking הרצאה מספר 14

2 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו מהם Servlets? הסבר על פרויקט הסיום

3 3 תקשורת בין מחשבים עד כה דיברנו על תוכנות עצמאיות הכתובות ב-Java ישנן דוגמאות רבות לתוכנות הדורשות קשר עם גורם חיצוני התחברות למסד נתונים חיצוני (לאו דוקא באותו מחשב) התחברות לתוכנה אחרת על מנת לקבל שירות טעינת קוד ממיקום מרוחק (למשל מהאינטרנט) שרת באינטרנט המכין תוכן דינאמי בהתאם לבקשה כמה עותקים של אותה תוכנה משתפים פעולה ברשת

4 4 תקשורת בין מחשבים אז מה דרוש בשביל ששתי ישויות ידברו אחת עם השנייה? שם מזהה ערוץ תקשורת

5 5 האינטרנט פרוטוקול האינטרנט (IP) מגדיר כתובות לכל מחשב המחובר לרשת/לאינטרנט יש כתובת הכתובת מאפשרת לרשת למצוא את המחשב הכתובת הינה 32 bit unsigned integer 192.52.52.52 בנוסף, ניתן לתת שם סימבולי, כגון www.google.com www.google.com שרתים הנקראים DNS (Domain Name Server) מתרגמים שמות סימבוליים לכתובות אינטרנט

6 6 כתובות ושירותים האם זה מספיק? flower.org 192.5.5.4 star.edu 192.5.5.6 רוצה להתחבר לשירות ספציפי... איזה שירות?

7 7 כתובות ושירותים כשנרצה שירות מסוים, נוסיף לכתובת הרצויה גם מספר שירות (Port number) מספרי שירותים הם בין 0 ל-65535 ישנם שירותים רבים המוגדרים כבר flower.org 192.5.5.4 star.edu 192.5.5.6 רוצה להתחבר לשירות ספציפי... איזה שירות? Http: 80 Ftp: 21 Email: 25 Telnet: 23

8 8 ערוצי תקשורת כעת אנו יודעים למצוא אחד את השני אבל מה עם שפה משותפת? ערוץ תקשורת @#$$#@ 123331 @@#$#!^^ 34 :o) גכעןגכעןנ דגכ דגכש שדגשדג

9 9 ערוצי תקשורת ישנם שני פרוטוקולים ראשיים לתקשורת המוגדרים ברשתות IP TCP – המאפשר יצירת קשר יציב בין שתי מכונות והחלפת מידע בצורה סינכרונית UDP – שליחת חבילות מידע קטנות ממחשב למחשב UDP MULTICAST – שליחת הודעה לקבוצה גדולה של מחשבים

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

11 11 TCP – תקשורת אמינה פרוטוקול אמין הבנוי על גבי בסיס לא אמין מאפשר זרימה דו-כיוונית של מידע משתמש במספרי הודעות ושליחות מחדש כדי לוודא שחבילות אומנם מגיעות ומגיעות לפי הסדר יש הודעה אם הייתה תקלה בתקשורת

12 12 מודל ה-Sockets הפשטה בתוכנה של תקשורת על גבי רשת בין שני מחשבים (שתי ישויות) הפשטה חזקה דיה להתמודד כמעט עם כל פרוטוקול תקשורת (אך משתמשים בה בעיקר עבור פרוטוקולי IP) יש מימוש של Sockets כמעט בכל מערכת הפעלה ושפת תכנות

13 13 מודל ה-Sockets השרת מאזין על שירות(PORT) מסוים, לכל לקוח שרוצה להתחבר כשמגיעה בקשה מלקוח נוצר ללקוח ולשרת Socket וביניהם נפתח ערוץ תקשורת על גבי ערוץ זה כעת אפשר לתקשר סינכרונית לקוח שרת בקשת התחברות ערוץ תקשורת

14 14 אז מה זה HTTP? HTTP – Hyper Text Transfer Protocol שייך למשפחה של פרוטוקולים שיושבים שכבה מעל TCP ו-UDP הפרוטוקול העיקרי ברשת האינטרנט תקשורת בין דפדפן האינטרנט לשרתים ברשת מספר שירות עיקרי: 80

15 15 אז מה זה HTTP? שרת HTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם קובץ משתמש מקליד כתובת אינטרנט השרת של GOOGLE מטפל בבקשה מחזיר דף HTML המוצג בדפדפן

16 16 אז מה זה HTTP? שרת HTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם קובץ URL (Uniform Resource Locator) מייצג משאב כלשהוא ברשת, דף אינטרנט, קובץ, שירות כלשהוא...

17 17 URL מורכב מהחלקים הבאים  פרוטוקול (Http, Ftp, File)  כתובת או שם  מספר שירות (Port) – אופציונלי  מידע ייחודי לפרוטוקול http://www.flickr.com/photos/tjt195/220510703/ 1 24 http://www.google.co.il/search?hl=iw&q=cow&btn&meta=

18 18 פרוטוקול ה-HTTP פרוטוקול מורכב וגדול יחסית הגדרה מלאה: http://www.w3.org/Protocols/ http://www.w3.org/Protocols/ שני שירותים עיקריים GET POST מטרת השירותים פשוטה, בהינתן URL, החזר קובץ (בד"כ דף אינטרנט)

19 19 GET Client connects to server on port 80 GET /~pugh/index.html HTTP/1.0 blank line Server responses with HTTP headers HTTP/1.1 200 OK Date: Mon, 20 Feb 2006 03:47:44 GMT Server: Apache Last-Modified: Wed, 15 Feb 2006 01:17:09 GMT ETag: "9b2b1c-948-1222af40" Accept-Ranges: bytes Content-Length: 2376 Connection: close Content-Type: text/html; charset=ISO-8859-1 Followed by blank line, then contents of response

20 אבל לא דיברנו על Java

21 21 אז מה ג'אווה נותן? טעינה של מחלקות מרוחקות - UrlClassLoader הפעלה של שירותים בעצמים מרוחקים - java.rmi ספריית Sockets (java.net) מימוש מערכת Sockets מלאה שכבה נוספת לעבודה קלה עם URL'ים ספריות שונות לעבודה כ-שרת Servlets JSP J2EE בכלליות

22 22 טעינת מחלקות מרוחקות Local JVM Local Java program Request remote class to load (URL) Bytecode Loaded class (can now create instances)

23 23 הפעלה מרוחקת Local JVM Local Java program Remote JVM Remote Java program Connect to instance of a class Receive remote reference Call methods on remote

24 24 Sockets ב-java.net יש מימוש מלא של Sockets שתי מחלקות מממשות מודל לקוח/שרת Socket מאפשר להתחבר לשרת/שירות מסוים מייצג חיבור, מאפשר לשלוח ולקבל מידע ServerSocket bind – קובע IP ו-Port עליהם השרת יקשיב accept – מאזין ומחכה ללקוח, כשיש חיבור מחזיר מופע של Socket

25 25 דוגמה ל-Sockets import java.net.*; import java.io.*; // Here's a simple client program that connects to a web server, // requests a document and reads the document from the server. String hostname = "java.oreilly.com"; // The server to connect to int port = 80; // Standard port for HTTP String filename = "/index.html"; // The file to read from the server Socket s = new Socket(hostname, port); // Connect to the server // Get I/O streams we can use to talk to the server InputStream sin = s.getInputStream(); BufferedReader fromServer = new BufferedReader(new InputStreamReader(sin)); OutputStream sout = s.getOutputStream(); PrintWriter toServer = new PrintWriter(new OutputStreamWriter(sout));

26 26 דוגמה ל- Sockets (2) … // Request the file from the server, using the HTTP protocol toServer.print("GET " + filename + " HTTP/1.0\r\n\r\n"); toServer.flush(); // Now read the server's response, assume it is a text file, and print it out for(String l = null; (l = fromServer.readLine()) != null; ) System.out.println(l); // Close everything down when we're done toServer.close(); fromServer.close(); s.close();

27 27 URL מחלקת עזר המאפשרת לקבל משאבים ע"י שימוש ב-URL import java.net.*; import java.io.*; // Create some URL objects URL url=null, url2=null, url3=null; try { url = new URL("http://www.oreilly.com"); // An absolute URL url2 = new URL(url, "catalog/books/javanut4/"); // A relative URL url3 = new URL("http:", "www.oreilly.com", "index.html"); } catch (MalformedURLException e) { /* Ignore this exception */ } // Read the content of a URL from an input stream InputStream in = url.openStream();

28 28 Server-side programming מהו קוד-שרת? רכיב תוכנה שרץ על שרת (מחשב מרכזי) ותפקידו לשרת לקוחות רבים המקרה הנפוץ ביותר – אתרי אינטרנט לג'אווה הרחבות שונות התומכות בכתיבת קוד לצד השרת רוב ההרחבות מוגדרות ב-J2EE: Java 2 Enterprise edition אנחנו נתמקד ב-Servlets

29 29 Servlets Servlet הוא מחלקה. מופעים של מחלקה זו יודעים לטפל בבקשות המגיעות לשרת ולייצר תשובה בהקשר של Http, Servlet יודע לקבל בקשה לקובץ (בד"כ דף HTML) ולהחזיר את הקובץ המבוקש Servlet אינו תכנית Java מלאה! אין לו זכות קיום עצמאית אין לו שרות מחלקה main!

30 30 Servlets  לקוח (למשל דפדפן) מבקש דף אינטרנט דינאמי  השרת מפענח את הבקשה ומחליט איזה Servlet יטפל בה  הבקשה מועברת ל-Servlet המטפל בה ומחזיר תשובה לשרת  השרת מעביר את התשובה חזרה ללקוח (הדף מוצג בדפדפן) Client...... Server Servlet Container (Tomcat) Servlet......

31 31 Servlets Servlets can be found in javax.servlet The main interface: Servlet interface Servlet { void init(ServletConfig config); //initialize servlet void service(ServletRequest req, //handle requests ServletResponse res); void destroy(); //destroy this instance }

32 32 מחזור החיים של Servlet The Servlet ContainerA Servlet time Constructor (class-dependant) init ServletConfig Client service destroy...... Handling clients requests ServletRequest ServletResponse Server

33 33 HttpServlet מנשק עזר, מתאים רק לבקשות HTTP מוגדר ב-javax.servlet.http interface HttpServlet { void service(HttpServletRequest req, //processes requests & HttpServletResponse rep); //transfers to approp. Method void doGet(HttpServletRequest req, //handle GET requests HttpServletResponse res); void doPost(HttpServletRequest req, //handle POST requests HttpServletResponse res); … }

34 34 כמה דוגמאות

35 35 עוד דוגמא

36 פרויקט סיום http://www.cs.tau.ac.il/courses/software1/exercises/final_project.htm

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

38 38 פרטים טכניים מועד ההגשה – 24.09.06 הפרויקט יהווה 10% מהציון בקורס הפרויקט ייעשה בזוגות (בלבד) מה צריך להגיש? מסמך בן שני עמודים לפחות המתאר כיצד ניגשתם לפתרון הבעיה, תכנון החוזים וכו' קובץ ZIP ובו הקוד של הפרויקט בצורה מסודרת (עם הוראות קומפילציה אם צריך) JAR עובד ובו התכנית המקומית, וקישור לשרת בו ניתן לראות גלריות בדפדפן האינטרנט

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

40 40 חלק ראשון – דרישות טכניות מנשק גראפי – SWT קריאת והצגת תמונות – Java I/O ו/או שימוש ב- SWT שליחת התמונות לשרת – Java Networking

41 41 חלק שני – שרת תמונות עליכם לכתוב Servlet (לפחות אחד) המספק את השירותים הבאים מקבל בקשות להעלאת תמונות, כל בקשה מורכבת משם סט ומתמונה בינארית בפורמט JPG PNG או GIF, כל תמונה מאוחסנת בספרייה מקומית (על השרת) עם שם מתאים Web server Servlet Container AddPicture(pic data)

42 42 חלק שני – שרת תמונות עליכם לכתוב Servlet (לפחות אחד) המספק את השירותים הבאים מקבל בקשות להצגת תמונות, הבקשה יכולה להיות בקשה להצגת כל סטים המאוחסנים על השרת, מציג את שמות הסטים, מספר תמונות בכל סט... בקשה להצגת סט ספציפי (מזוהה לפי שם), מציג צלמיות (Thumbnails) של כל התמונות. לחיצה על תמונה תפתח את התמונה המלאה בדף חדש

43 43 חלק שני – דרישות טכניות השרותים יסופקו ע"י Servlet שתכתבו (ניתן לכתוב שניים אם אתם מעדיפים) ה-Servlet'ים ירוצו כאן בפקולטה על שרת Tomcat התמונות המועלות ע"י המשתמש יאוחסנו בספרייה מקומית כאשר יש בקשה להצגת תמונות, ה-Servlet יכין דף אינטרנט (HTML) מעוצב להצגה בדפדפן האינטרנט

44 44 הרחבת הפרויקט אתם מוזמנים להרחיב את הגדרת הפרויקט ולהוסיף יכולות נוספות נחמדות ומעניינות רעיונות ניתן לשאוב מ... Flickr – www.flickr.comwww.flickr.com Google Picassa - http://picasa.google.com/http://picasa.google.com/ Adobe Photoshop Album וכו'

45 בהצלחה!!


Download ppt "החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו."

Similar presentations


Ads by Google