try {
byte[] receiveData = new byte[1024]; receivePacket =
new DatagramPacket(receiveData, receiveData.length); myServer.receive(receivePacket);
ByteArrayInputStream bais = new ByteArrayInputStream(receiveData); ObjectInputStream ois = new ObjectInputStream(bais);
user = (User)ois.readObjjctQ;
} catch (Exception ex) { view.showMessage(ex.getStackT race().toString());
}
return user;
}
private boolean checkUser(User user) {
Có thể bạn quan tâm!
- Kỹ Thuật Lập Trình Truyền Thông Với Giao Thức Tcp
- Kỹ Thuật Lập Trình Truyền Thông Với Giao Thức Udp
- Công nghệ Java - 27
- Công nghệ Java - 29
Xem toàn bộ 232 trang tài liệu này.
String query = "Select * FROM users WHERE username ='"
+ user.getUserName()+ "' AND password ='" + user.getPassword() + "'"; try {
Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); if (rs.next()) {
return true;
}
}catch(Exception e) { view.showMessage(e.getStackTrace().toString());
}
return false;
}
}
ServerRun.java
package udp.server; public class ServerRun {
public static void main(String[] args) {
ServerView view = new ServerView(); ServerControl control = new ServerControl(view);
}
Kết quả
Login thành công:
Login lỗi:
7.5. Lấy dữ liệu web
7.5.1. URL và URI
7.5.2. Sử dụng URLConnection để truy xuất dữ liệu
7.6. Gửi Email
Gửi mail trong java sử dụng JavaMail. Đây là một nền tảng và giao thức độc lập được sử dụng để gửi, nhận và đọc mail thông qua ứng dụng Java. Sử dụng JavaMail API này để tạo ra những ứng dụng Java có tính năng hỗ trợ gửi email cho người dùng. Ví dụ sau khi đăng ký thành công một tài khoản, ứng dụng sẽ gửi email thông báo đên người dùng, … Hình bên dưới là một minh hoạ về sử dụng JavaMail.
Hình 7.6. Minh hoạ sử dụng JavaMail
7.6.1.1. Mô tả các giao thức mail khác nhau
Hiện nay có 3 giao thức cơ bản được ứng dụng trong mail server giúp hệ thống có thể hoạt động trơn tru và đảm bảo khả năng bảo mật cao nhất, bao gồm:
- SMTP – Simple Mail Transfer Porotocol: SMTP được sử dụng khi gửi từ một ứng dụng email như Postfix với một máy chủ email hoặc khi email được gửi từ một máy chủ email khác. Giao thức này sử dụng cổng TCP 25.
- POP3 – Post Office Porotocol version 3: giao thức này được dùng để tải một email từ một máy chủ email. POP3 sử dụng cổng TCP 110.
- IMAP – Internet Message Access Protocol: Đây là giao thức thế hệ mới của POP. IMAP sử dụng cổng TCP 143 và đặt sự kiểm soát email trên mail server. IMAP có thể hoạt động ở 3 chế độ: trực tuyến, ngoại tuyến và ngắt kết nối. Chế độ ngoại tuyến được thực hiện như sau: khi các email đã được chuyển tới máy client, nó sẽ bị xóa khỏa mail server và sau đó hệ thống bị ngắt. Lúc này người dùng có thể đọc, trả lời và làm một số việc khác ở chế độ ngoại tuyến. Tuy nhiên nếu họ muốn gửi thư, họ phải kết nối lại. Như vậy ở trong chế độ này, thông điệp được lưu tạm ở client server giúp người dùng có thể sử dụng bình thường và ở lần kết nối kế tiếp nó sẽ được cập nhập trở lại vào mail server.
Hình 7.7. Các giao thức mail
7.6.2. Khái niệm Session
Lớp Session mô tả một mail session và không có các lớp phụ, Nó thu thập các thuộc tính và giá trị mặc định được sử dụng bới mail API. Một phiên mặc định có thể được chia sẻ bởi nhiều ứng dụng trên desktop. Các session không chia sẻ cũng có thể được tạo ra. Lớp Session cung cấp quyền truy cập tới các nhà cũng cấp thực hiện Store, Transport và các lớp liên quan.Các giao thức cung cấp cấp hình bằng cách sử dụng các tệp:
javamail.providers and javamail.default.providers javamail.address.map and javamail.default.address.map
7.6.3. Cách tạo message
Tạo một đối tượng MimeMessage với một số thiết lập cơ bản như: Người gửi (from), người nhận (to), chủ đề (subject) và nội dung (body)
Message msg = new MimeMessage(s); msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); msg.setSubject(subject);
msg.setText(body);
7.6.4. Các bước để tạo và gửi message
Bước 1. Tạo đối tượng Properties và chỉ định thông tin host, post
Properties p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", "smtp.gmail.com");
p.put("mail.smtp.port", 587);
Bước 2. Tạo đối tượng session
Session s = Session.getInstance(p, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(accountName, accountPassword);
}
});
Trong đó accountName và accountPassword là tài khoản gmail. Bước 3. Tạo đối tượng message
Message msg = new MimeMessage(s); msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); msg.setSubject(subject);
msg.setText(body);
Bước 4. Gửi mail
Transport.send(msg);
7.6.5. Các bước cần thiết để đọc một message
Bước 1. Tạo đối tượng Properties và chỉ định thông tin host, post
Properties p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", "smtp.gmail.com"); p.put("mail.smtp.port", 587);
Bước 2. Tạo Authentication
javax.mail.Authenticator pa = null; //default: no authentication if (username != null && password != null) { props.put(“mail.smtp.auth”, “true”);
pa = new javax.mail.Authenticator (){
public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password);
}
};
}//else: no authentication
Bước 3.Kết nối tới POP3 server
Session session = Session.getDefaultInstance(props, pa); Store store = session.getStore(provider);
store.connect(host, username, password);
Bước 4. Đọc mail
Folder inbox = store.getFolder(“INBOX”);
//…
inbox.open(Folder.READ_ONLY);
//…
Message[] messages = inbox.getMessages();
7.6.6. Các bước cần thiết để trả lời một email
Message[] messages = folder.getMessages();
for (int i = 0, n = messages.length; i < n; i++) { Message message = messages[i];
}
Bước 1. Đọc email như các bước ở trên Bước 2. Chọn email để trả lời
Bước 3. Tạo đối tượng message
Message replyMessage = new MimeMessage(session); replyMessage = (MimeMessage) message.reply(false); replyMessage.setFrom(new InternetAddress(to)); replyMessage.setText("Thanks"); replyMessage.setReplyTo(message.getReplyTo());
Bước 4. Gửi mail
Transport t = session.getTransport("smtp"); t.sendMessage(replyMessage, replyMessage.getAllRecipients());
CÂU HỎI ÔN TẬP, THẢO LUẬN
Câu 1. Mỗi đối tượng trong lớp InetAddress chứa mấy thành phần chính? Lớp kế thừa từ lớp InetAddress gồm những lớp nào?
Câu 2. Phương thức sau trả về kết quả gì:
InetAddress[] addresses = InetAddress.getAllByName(String name) throws UnknownHostException
Câu 3. Chương trình sau cho kết quả gì?
import java.net.*; public class MyAddress {
public static void main(String[] args) { try { InetAddress me = InetAddress.getLocalHost( ); String dottedQuad = me.getHostAddress( ); System.out.println("My address is " + dottedQuad); catch (UnknownHostException ex) {
System.out.println("I'm sorry. I don't know my own address.");
}
}
}
Câu 4. Chương trình sau cho kết quả gì?
import java.net.*;
public class AddressTests {
public static int getVersion(InetAddress ia)
{ byte[] address = ia.getAddress( ); if (address.length == 4) return 4;
else if (address.length == 6) return 6; else return -1;
}
Câu 5. Liệt kê tóm tắt một số lớp Java hỗ trợ lập trình với TCPSocket. Giái thích tác dụng của các lớp.
Câu 6. Trình bày kỹ thuật lập trình truyền thông với giao thức TCP?
Câu 7. Tóm tắt Một số lớp Java hỗ trợ lập trình với UDPSocket. Giải thích tác dụng của các lớp đó.
Câu 8. Trình bày kỹ thuật lập trình truyền thông với giao thức UDP. So sánh với giao thức TCP?
BÀI TẬP ỨNG DỤNG
Bài 1. Viết chương trình nhận đối số là một URL. Nối kết đến Web Server trong URL nhận được, lấy trang web về và in ra màn hình theo dạng textfile (html).
Bài 2. Viết chương trình gửi đến URL một chuỗi, mở kết nối từ URL này và hiển thông tin header.
Chức năng chương trình:
- Mở kết nối đến địa chỉ URL
- Hiển thị thông tin các header nhận được
Bài 3. Viết chương trình in ra địa chỉ của localhost (địa chỉ cục bộ), null host và địa chỉ bất kì trên internet.
Bài 4. Viết chương trình đọc file từ xa thông qua web server. Bài 5. Viết chương trình download file thông qua web server. Bài 6.Viết chương trình cộng hai số nguyên
- Client: Nhập vào từ bàn phím 2 số nguyên (a,b). Client chờ nhận kết quả từ Server để in ra màn hình.
- Server: Nhận 2 số nguyên mà Client vừa gửi, tính tổng, tích, thương của chúng và gửi kết quả cho Client.
Bài 7. Viết chương trình kiểm tra số
-Client: Nhập vào một số.Client chờ nhận kết quả từ Server để in ra màn hình.
-Server:Nhận số mà Client vừa gửi, Server tiến hành kiểm tra số đó có là nguyên tố, số hoàn hảo hay không và gửi lại cho Client.
Bài 8. Viết chương trình
-Client: Nhập vào một mảng số nguyên . Client chờ nhận kết quả từ Server để in ra màn hình.
-Server: Nhận mảng mà Client vừa gửi, Server tiến hành tìm các số chẵn và gửi lại cho Client.
Bài 9. Xây dựng một mô hình ứng dụng khách/chủ (client/server) sử dụng lớp Socket và ServerSocket để kết nối và trao đổi thông tin giữ máy khách và máy chủ. Máy khách (client) sẽ gửi một chuỗi đến máy chủ (server), máy chủ sẽ chuẩn hóa và đảo ngược thứ tự của chuỗi và gửi trả về cho máy khách.
Bài 10. Tạo ra hai ứng dụng độc lập (một client và một server). Client chấp nhận một trong các số sau: 1, 2, 3. Số này sẽ được gửi đến server. Server sẽ trả lại tương ứng : “ONE” hoặc “TWO” hoặc “THREE” (tùy theo số nhận được). Dùng giao thức TCP/IP