נשלח בתאריך: 28 May 2008 בשעה 13:05 | | IP רשוּם
|
|
|
|
הנה לדוגמא לתוכנית Client ו-Server שעשיתי, עכשיו מה שחשוב זה שעל-מנת לדעת אם
הגיע מידע חדש, הן מהשרת או מהלקוח אתה צריך להריץ תהליכון שישעה לך את זה.
קלאס Client:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
InetAddress addr = InetAddress.getByName( "home-8a6a13c913");
System. out.println("addr = " + addr);
Socket socket =
new Socket(addr, 2003);
// Guard everything in a try-finally to make
// sure that the socket is closed:
try {
System. out.println("socket = " + socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// Output is automatically flushed by PrintWriter:
PrintWriter out =
new PrintWriter( new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
for(int i = 0; i < 10; i ++) {
out.println( "Stam " + i);
// String str = in.readLine();
// System.out.println(str);
}
out.println( "END");
} finally {
System. out.println("closing...");
socket.close();
}
}
}
קלאס Server:
import java.awt.Frame; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.*; import java.net.*; public class Server {
public static final int PORT = 2003;
public static void main(String[] args) throws IOException { ServerSocket s = new ServerSocket(PORT); System.out.println("Started: " + s); try { // Blocks until a connection occurs: Socket socket = s.accept(); try { System.out.println( "Connection accepted: "+ socket); BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream())); // Output is automatically flushed by PrintWriter: PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())),true); while (true) { String str = in.readLine(); if (str.equals("END")) break; //System.out.println("Echoing: " + str); System.out.println(str); //out.println(str); } // Always close the two sockets... } finally { System.out.println("closing..."); socket.close(); } } finally { s.close(); } } }
תעתיק לפנקס רשימות וזה יסתדר.
עכשיו איך זה עובד???
על-מנת להעביר נתונים בין מחשב למחשב עליך לפתוח סוקט.
בוא נחשוב שהמחשב הוא עיר, וסוקט הוא בניין בעיר, אחרי שפתחנו סוקט אלינו לציין דרך
איזה חדר בבניין יועבר המידע (שזה נקרא פורט) לכן בנוסף לבניין עלינו גם לבחור חדר,
וזה בעצם הפורט.
עכשיו חשוב שלא תפתח פורט שהוא בשימוש כבר של מערכות שונות כמו Telnet ,FTP וכו',
אז בבקשה לא לעשות טעות מטומטמת ואחרי זה לא להבין למה זה לא עובד...
עקרונית עדיף שתבחר פורט שהוא מעל 1024 ככה תהיה בטוח ששום תוכנה לא תופסת לך
את הפורט הזה.
איך המידע מועבר, זה ממש פשוט, באמצעות אובייקטי הכתיבה והקריאה, כאשר זה נעשה
באמצעות הסוקט!, עכשיו בשביל לבדוק אם הגיע מידע חדש, אתה צריך להפעיל תהליכון
כל כמה זמן, שכאשר הוא יקרא תו ששונה מ-NULL או תו מוסכם שאותו הגדרת כתו
תחילת הודעה, אז תדע שכרגע נשלח מידע חדש.
|