View
244
Download
21
Embed Size (px)
Citation preview
החיים המקווניםNetworking
מספר 14הרצאה
2
בהרצאה היום
החומר היום אינו למבחן, אבל חיוני לפרויקטהסיום
תקשורת בין מחשבים תקשורתTCP/UDP פרוטוקולHTTPושימושיו מהםServlets?הסבר על פרויקט הסיום
3
מחשבים בין תקשורת
-עד כה דיברנו על תוכנות עצמאיות הכתובות בJava ישנן דוגמאות רבות לתוכנות הדורשות קשר עם גורם
חיצוני)התחברות למסד נתונים חיצוני )לאו דוקא באותו מחשבהתחברות לתוכנה אחרת על מנת לקבל שירות)טעינת קוד ממיקום מרוחק )למשל מהאינטרנטשרת באינטרנט המכין תוכן דינאמי בהתאם לבקשהכמה עותקים של אותה תוכנה משתפים פעולה ברשת
4
מחשבים בין תקשורת
אז מה דרוש בשביל ששתי ישויות ידברו אחת עםהשנייה?
שם מזההשם מזהה
ערוץ תקשורת
5
האינטרנט
( פרוטוקול האינטרנטIPמגדיר כתובות )לכל מחשב המחובר לרשת/לאינטרנט יש כתובתהכתובת מאפשרת לרשת למצוא את המחשב 32הכתובת הינה bit unsigned integer
•192.52.52.52 בנוסף, ניתן לתת שם סימבולי, כגוןwww.google.com
שרתים הנקראיםDNS (Domain Name Server) מתרגמים שמות סימבוליים לכתובות אינטרנט
6
ושירותים כתובות
?האם זה מספיק
flower.org192.5.5.4
star.edu192.5.5.6
רוצה להתחבר לשירות ספציפי...
איזה שירות?
7
ושירותים כתובות
( כשנרצה שירות מסוים, נוסיף לכתובת הרצויה גם מספר שירותPort number)
65535 ל-0מספרי שירותים הם ביןישנם שירותים רבים המוגדרים כבר
flower.org192.5.5.4
star.edu192.5.5.6
רוצה להתחבר לשירות ספציפי...
איזה שירות?
Http: 80Ftp: 21Email:
25Telnet:
23
8
תקשורת ערוצי
כעת אנו יודעים למצוא אחד את השני?אבל מה עם שפה משותפת
ערוץ תקשורת
@#$$#@123331
^^!#$#@@34: o)
גכעןגכעןנ דגכ דגכש שדגשדג
9
תקשורת ערוצי
ישנם שני פרוטוקולים ראשיים לתקשורתIPהמוגדרים ברשתות
TCP המאפשר יצירת קשר יציב בין שתי – מכונות והחלפת מידע בצורה סינכרונית
UDP שליחת חבילות מידע קטנות ממחשב – למחשב
•UDP MULTICAST שליחת הודעה לקבוצה גדולה – של מחשבים
10
UDPתקשורת לא אמינה –
פרוטוקול הבנוי על גבי פרוטוקול האינטרנטהבסיסי
חבילה נשלחת, אין וודאות שתגיע ליעדהלא מקבלים אישור שחבילה ששלחת הגיעהלא מקבלים הודעה אם החבילה נאבדה או נזרקההחבילות לאו דווקא מגיעות בסדר מסויםהחבילות עלולות להיזרק לפח אם הרשת עמוסה
שולח מקבל
11
TCPתקשורת אמינה –
פרוטוקול אמין הבנוי על גבי בסיס לא אמיןמאפשר זרימה דו-כיוונית של מידע משתמש במספרי הודעות ושליחות מחדש כדי
לוודא שחבילות אומנם מגיעות ומגיעות לפי הסדר
יש הודעה אם הייתה תקלה בתקשורת
12
Socketsמודל ה-
הפשטה בתוכנה של תקשורת על גבי רשת ביןשני מחשבים )שתי ישויות(
הפשטה חזקה דיה להתמודד כמעט עם כלפרוטוקול תקשורת )אך משתמשים בה בעיקר
(IPעבור פרוטוקולי יש מימוש שלSockets כמעט בכל מערכת
הפעלה ושפת תכנות
13
Socketsמודל ה-
מאזיןהשרת(על שירות PORT מסוים, לכל לקוח שרוצה )להתחבר
כשמגיעה בקשה מלקוח נוצר ללקוח ולשרתSocket וביניהם נפתח ערוץ תקשורת
על גבי ערוץ זה כעת אפשר לתקשר סינכרונית
שרתלקוח
בקשת התחברות
ערוץ תקשורת
14
?HTTPאז מה זה
HTTP – Hyper Text Transfer Protocol שייך למשפחה של פרוטוקולים שיושבים שכבה
UDP ו-TCPמעל הפרוטוקול העיקרי ברשת האינטרנט
תקשורת בין דפדפן האינטרנט לשרתים ברשת :80מספר שירות עיקרי
15
?HTTPאז מה זה
שרתHTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם
קובץ
משתמש מקליד כתובת אינטרנט
מטפל בבקשהGOOGLEהשרת של
המוצג בדפדפןHTMLמחזיר דף
16
?HTTPאז מה זה
שרתHTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם
קובץ
URL )Uniform Resource Locator(
מייצג משאב כלשהוא ברשת, דף אינטרנט, קובץ, שירות כלשהוא...
17
URL
מורכב מהחלקים הבאים(Http, Ftp, Fileפרוטוקול )1.
כתובת או שם2.
( – אופציונליPortמספר שירות )3.
מידע ייחודי לפרוטוקול4.
http://www.flickr.com/photos/tjt195/220510703/
1 2 4
http://www.google.co.il/search?hl=iw&q=cow&btn&meta=
18
HTTPפרוטוקול ה-
פרוטוקול מורכב וגדול יחסית
:הגדרה מלאה http://www.w3.org/Protocols/
שני שירותים עיקרייםGETPOST
מטרת השירותים פשוטה, בהינתןURL החזר ,קובץ )בד"כ דף אינטרנט(
19
GET Client connects to server on port 80
GET /~pugh/index.html HTTP/1.0blank line
Server responses with HTTP headersHTTP/1.1 200 OKDate: Mon, 20 Feb 2006 03:47:44 GMTServer: ApacheLast-Modified: Wed, 15 Feb 2006 01:17:09 GMTETag: "9b2b1c-948-1222af40"Accept-Ranges: bytesContent-Length: 2376Connection: closeContent-Type: text/html; charset=ISO-8859-1
Followed by blank line, then contents of response
Java אבל לא דיברנו על
21
? ' נותן אווה ג מה אז
- טעינה של מחלקות מרוחקותUrlClassLoader - הפעלה של שירותים בעצמים מרוחקיםjava.rmi ספרייתSockets (java.net)
מימוש מערכתSocketsמלאה שכבה נוספת לעבודה קלה עםURLים'
ספריות שונות לעבודה כ-שרתServletsJSPJ2EEבכלליות
22
מרוחקות מחלקות טעינת
Local JVM
Local Java program
Request remoteclass to load )URL(
Bytecode
Loaded class)can now
create instances(
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
Sockets
-בjava.net יש מימוש מלא של Socketsשתי מחלקות מממשות מודל לקוח/שרת
Socketמאפשר להתחבר לשרת/שירות מסוים•מייצג חיבור, מאפשר לשלוח ולקבל מידע•
ServerSocket•bind קובע – IP-ו Portעליהם השרת יקשיב •accept מאזין ומחכה ללקוח, כשיש חיבור מחזיר –
Socketמופע של
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
)Sockets )2 דוגמה ל-
…
// Request the file from the server, using the HTTP protocoltoServer.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 outfor)String l = null; )l = fromServer.readLine)(( != null; ( System.out.println)l(;
// Close everything down when we're donetoServer.close)(;fromServer.close)(;s.close)(;
27
URL
מחלקת עזר המאפשרת לקבל משאבים ע"י ;*.URLimport 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
Server-side programming
?מהו קוד-שרת )רכיב תוכנה שרץ על שרת )מחשב מרכזי
ותפקידו לשרת לקוחות רביםהמקרה הנפוץ ביותר – אתרי אינטרנט
לג'אווה הרחבות שונות התומכות בכתיבת קודלצד השרת
-רוב ההרחבות מוגדרות בJ2EE: Java 2 Enterprise edition
-אנחנו נתמקד בServlets
29
Servlets
Servlet הוא מחלקה. מופעים של מחלקה זו יודעים לטפל בבקשות המגיעות לשרת ולייצר
תשובה בהקשר שלHttp, Servlet יודע לקבל בקשה
( ולהחזיר את הקובץ HTMLלקובץ )בד"כ דף המבוקש
Servlet אינו תכנית Java מלאה! אין לו זכות קיום עצמאית
אין לו שרות מחלקהmain!
30
Servlets
לקוח )למשל דפדפן( מבקש דף אינטרנט דינאמי1.
יטפל בהServletהשרת מפענח את הבקשה ומחליט איזה 2.
המטפל בה ומחזיר תשובה Servletהבקשה מועברת ל-3.לשרת
השרת מעביר את התשובה חזרה ללקוח )הדף מוצג 4.בדפדפן(
Client
Client
.
.
.
Server
Servlet Container(Tomcat)
Servlet
Servlet
.
.
.
31
Servlets
Servlets can be found in javax.servlet The main interface: Servlet
interface Servlet {void init(ServletConfig config); //initialize servletvoid service(ServletRequest req, //handle requests
ServletResponse res);void destroy(); //destroy this instance
}
32
Servletמחזור החיים של The Servlet Container A Servlettime
Constructor(class-dependant)
init
ServletConfig
Client
Client
service
destroy
.
.
.
Handling clients requests
ServletRequest
ServletResponse
Server
33
HttpServlet
מנשק עזר, מתאים רק לבקשותHTTP-מוגדר בjavax.servlet.http
interface HttpServlet {void service(HttpServletRequest req, //processes requests &
HttpServletResponse rep); //transfers to approp. Methodvoid doGet(HttpServletRequest req, //handle GET requests
HttpServletResponse res); void doPost(HttpServletRequest req, //handle POST requests
HttpServletResponse res); …
}
34
דוגמאות כמה
35
דוגמא עוד
סיום פרויקט
http://www.cs.tau.ac.il/courses/software1/exercises/final_project.htm
37
הפרויקט הגדרת
דפדפן תמונותמטרת הפרויקט הינה ליצור אשר מאפשר למשתמש לבחור ספרייה על
המחשב ומציג את התמונות שבה. בנוסף ניתנת למשתמש האפשרות "לשתף את התמונות", ז"א
להעלות סט תמונות לאתר בצורה אוטומטית )מתוך דפדפן התמונות( ולאחר מכן לראות את
,Explorerגלריית התמונות בדפדפן האינטרנט )Firefox.)...
38
טכניים פרטים
– 24.09.06מועד ההגשה מהציון בקורס10%הפרויקט יהווה )הפרויקט ייעשה בזוגות )בלבד?מה צריך להגיש
מסמך בן שני עמודים לפחות המתאר כיצד ניגשתםלפתרון הבעיה, תכנון החוזים וכו'
קובץZIP ובו הקוד של הפרויקט בצורה מסודרת )עם הוראות קומפילציה אם צריך(
JAR עובד ובו התכנית המקומית, וקישור לשרת בו ניתן לראות גלריות בדפדפן האינטרנט
39
תמונות – דפדפן ראשון חלק
המשתמש בוחר ספרייהמקומית על המחשב
במנשק הגראפי מוצגות כלהתמונות בספרייה זו )צלמיות -
Thumbnails ) ניתן ללחוץ לחיצה כפולה על
תמונה ולראות אותה בגדול יותר
בלחיצת כפתור ניתן לתת שםלסט התמונות הנוכחי ולשלוח
אותו לשרת באינטרנט )ראה חלק שני של הפרויקט(
40
טכניות – דרישות ראשון חלק
– מנשק גראפיSWT – קריאת והצגת תמונותJava I/O ו/או שימוש
SWTב- – שליחת התמונות לשרתJava Networking
41
תמונות – שרת שני חלק
עליכם לכתובServlet לפחות אחד( המספק את( השירותים הבאים
מקבל בקשות להעלאת תמונות, כל בקשה מורכבת משם, כל GIF או JPG PNGסט ומתמונה בינארית בפורמט
תמונה מאוחסנת בספרייה מקומית )על השרת( עם שם מתאים
Web serverServlet Container
AddPicture)pic data(
42
תמונות – שרת שני חלק
עליכם לכתובServlet לפחות אחד( המספק את( השירותים הבאים
מקבל בקשות להצגת תמונות, הבקשה יכולה להיותבקשה להצגת כל סטים המאוחסנים על השרת, מציג את שמות •
הסטים, מספר תמונות בכל סט... בקשה להצגת סט ספציפי )מזוהה לפי שם(, מציג צלמיות •
(Thumbnails של כל התמונות. לחיצה על תמונה תפתח את )התמונה המלאה בדף חדש
43
טכניות – דרישות שני חלק
השרותים יסופקו ע"יServlet שתכתבו )ניתן לכתוב שניים אם אתם מעדיפים(
-הServlet ים ירוצו כאן בפקולטה על שרת'Tomcat
התמונות המועלות ע"י המשתמש יאוחסנובספרייה מקומית
-כאשר יש בקשה להצגת תמונות, הServlet יכין ( מעוצב להצגה בדפדפן HTMLדף אינטרנט )
האינטרנט
44
הפרויקט הרחבת
אתם מוזמנים להרחיב את הגדרת הפרויקטולהוסיף יכולות נוספות נחמדות ומעניינות
...רעיונות ניתן לשאוב מFlickr – www.flickr.comGoogle Picassa -
http://picasa.google.com/Adobe Photoshop Album'וכו
!!בהצלחה