החיים המקוונים networking הרצאה מספר 14. 2 היום בהרצאה החומר...

Post on 21-Dec-2015

244 Views

Category:

Documents

21 Downloads

Preview:

Click to see full reader

TRANSCRIPT

החיים המקוונים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'וכו

!!בהצלחה

top related