Danh mục

ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH MẠNG VỀ DỊCH VỤ THƯ ĐIỆN TỬ: CHƯƠNG 4_4

Số trang: 10      Loại file: pdf      Dung lượng: 290.96 KB      Lượt xem: 9      Lượt tải: 0    
Thư viện của tui

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Giải thích chương trình trên: - Ba hàng sau trong khối try của phương thức main() buộc phải có. Chúng thiết lập socket connetion giữa client-server và mở input, outputstream trên socket tạo ra
Nội dung trích xuất từ tài liệu:
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH MẠNG VỀ DỊCH VỤ THƯ ĐIỆN TỬ:CHƯƠNG 4_4 ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH MẠNG VỀ DỊCH VỤ THƯ ĐIỆN TỬ CHƯƠNG 4 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA. Giải thích chương trình trên: - Ba hàng sau trong khối try của phương thức main() buộc phải có.Chúng thiết lập socket connetion giữa client-server và mở input, outputstreamtrên socket tạo ra: echoSocket = new Socket(ResearchCC, 7); os = new DataOutputStream(echoSocket.getOutputStream()); is = new DataInputStream(echoSocket.getInputStream()); Hàng đầu tạo ra một đối tượng Socket, đặt tên là echoSocket. Socketconstructor được sử dụng ở đây yêu cầu tên máy và port number mà ta muốnconnect tới. Chương trình ví dụ dùng host name ResearchCC. Ðối số thứ hai làport number. Port 7 là port mà Echo server listen. Hàng thứ hai và thứ ba mở một output stream và một input stream trênsocket vừa thiết lập. EchoTest đơn thuần chỉ cần write tới output stream vàread từ input stream để truyền dữ liệu với server thông qua socket. Nếu bạnchưa quen với các stream trong Java, bạn có thể xem thêm phần các Streamcũng trong đề tài này. - Phần kế đọc từ standard input stream của EchoTest một hàng mỗi lần.EchoTest write ngay input text (theo sau bởi một newline character) tớioutput stream: String userInput; while ((userInput = stdIn.readLine()) != null) { os.writeBytes(userInput); os.writeByte( ); System.out.println(echo: + is.readLine()); } - Hàng cuối trong vòng lặp while đọc một hàng từ input stream. Phươngthức readLine() block cho tới khi server echo thông tin trở về cho EchoTest.Khi readLine() return, EchoTest in hàng thông tin ra standard output. Vònglặp while tiếp tục-- EchoTest đọc input từ user, gửi nó cho Echo server, nhậntrả lời từ server, và hiển thị nó-- cho tới khi user đánh vào một end-of-inputcharacter. - Khi user đánh vào một end-of-input character, vòng lặp while kết thúc,chương trình tiếp tục thực thi ba hàng kế: os.close(); is.close(); echoSocket.close(); - Ba hàng code này đóng các input, output stream, rồi đóng socketconnection tới server. Thứ tự thực hiện ở đây rất quan trọng, ta nên đóng cácstream kết nối với một socket trước khi đóng chính socket đó. - Nhìn chung, các bước cần tiến hành để dùng socket ở phía client nhưsau: 1. Mở một socket. 2. Mở input stream và outputstream ứng vớ socket đó. 3. Read và write tới stream tuỳ thuộc vào nghi thức của server 4. Ðóng các stream. 5. Ðóng socket. - Chỉ có bước ba là khác nhau giữa các client, do dựa vào server. Cácbước còn lại hầu như giống nhau. b. Sử dụng Socket ở Server - Chương trình Server bắt đầu bằng việc tạo ra một instance của lớpServerSocket để listen một port được đặc tả. Khi hiện thực một chương trìnhServer, ta nên chọn một port mà không được dành sẵn cho các dịch vụ khác: try { serverSocket = new ServerSocket(4444); } catch (IOException e) { System.out.println(Could not listen on port: + 4444 + , + e); System.exit(1); } - Bước kế tiếp, Server accept một connection request từ một client: Socket clientSocket = null; try { clientSocket = serverSocket.accept(); } catch (IOException e) { System.out.println(Accept failed: + 4444 + , + e); System.exit(1); } - Sau khi sinh ra socket ứng với client yêu cầu connect,server dựa vàosocket và các input, output stream ứng với socket này để thực hiện việc read,write dữ liệu. Ðiều này hoàn toàn giống như cách thức đã mô tả ở phần sửdụng soclet ở Client được mô tả ở phần trên. Cụ thể là các việc sau: 1. Mở một input và output stream ứng với socket. 2. Read và write tới socket. - Trong ví dụ, có nhiều client đồng thời đưa ra các connection requestvới server tại port mà server listen (port 4444). Có hai cách để giải quyết vấnđề này: 1. Các connection request được xếp hàng, và Server phải accept các connection tuần tự 2. Phục vụ các connection request đồng thời bằng việc dùng các thread-- Mỗi thread xử lý một connection Ví dụ đã chọn cách thứ hai để hiện thực vì nó hợp lý hơn: mọi user cần phảiđược xử lý bình đẳng như nhau. Giải thuật cho phần này như sau: while (true) { accept a connection; create a thread to deal with the client; end while Thread được sinh ra sẽ read và write tới connection ứng với connectionđó khi cần thiết. c. Thư viện các hàm socket (API) trong Java. - Trong Java người ta cũng xây dựng các lớp về socket phục vụ cho việctruyền tải dữ liệu dễ dàng và n ...

Tài liệu được xem nhiều: