Ứng dụng đa tuyến đoạn trong lập trình Java - Pdf 70

. Ứng dụng đa tuyến đoạn trong lập trình Java
Các server như đã viết ở trên rất đơn giản nhưng nhược điểm của nó là bị hạn chế về mặt hiệu
năng vì nó chỉ quản lý được một client tại một thời điểm. Khi khối lượng công việc mà server cần xử lý
một yêu cầu của client là quá lớn và không biết trước được thời điểm hoàn thành công việc xử lý thì
các server này là không thể chấp nhận được.
Để khắc phục điều này, người ta quản lý mỗi phiên của client bằng một tuyến đoạn riêng, cho
phép các server làm việc với nhiều client đồng thời. Server này được gọi là server tương tranh
(concurrent server)-server tạo ra một tuyến đoạn để quản lý từng yêu cầu, sau đó tiếp tục lắng nghe
các client khác.
Chương trình client/server chúng ta đã xét mở mục 6 và mục 7 là chương trình client/server đơn
tuyến đoạn. Các server đơn tuyến đoạn chỉ quản lý được một liên kết tại một thời điểm. Trong thực tế
một server có thể phải quản lý nhiều liên kết cùng một lúc. Để thực hiện điều này server chấp nhận các
liên kết và chuyển các liên kết này cho từng tuyến đoạn xử lý.
Trong phần dưới đây chúng ta sẽ xem xét cách tiến hành cài đặt một chương trình client/server
đa tuyến đoạn.
Chương trình phía server
import java.io.*;
import java.net.*;
class EchoServe extends Thread
{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public EchoServe (Socket s) throws IOException
{
socket = s;
System.out.println("Serving: "+socket);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// Cho phép auto-flush:
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())), true);

}
}
}
public class TCPServer1
{
static int PORT=0; .
public static void main(String[] args) throws IOException
{
if (args.length == 1)
{
PORT=Integer.parseInt(args[0]); // Nhập số hiệu cổng từ đối dòng lệnh
}
// Tạo một đối tượng Server Socket
ServerSocket s = new ServerSocket(PORT);
InetAddress addrs= InetAddress.getLocalHost();

System.out.println("TCP/Server running on : "+ addrs +" ,Port "+s.getLocalPort());

try
{
while(true)
{
// Phong tỏa cho tới khi có một liên kết đến
Socket socket = s.accept();
try
{
new EchoServe(socket); // Tạo một tuyến đoạn quản lý riêng từng liên kết
} catch(IOException e) {
socket.close();
}


// Output is automatically flushed by PrintWriter:

PrintWriter out =new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);

// Đọc dòng ký tự từ bàn phím

DataInputStream myinput = new DataInputStream(new
BufferedInputStream(System.in));
try
{
for(;;)
{
System.out.println("Type anything followed by RETURN, or Exit to terminate
the program.");
String strin=myinput.readLine();

// Quit if the user typed ctrl+D
if (strin.equals("exit")) break;
else
out.println(strin); // Send the message
String strout = in.readLine(); // Recive it back
if ( strin.length()==strout.length())
{ // Compare Both Strings

System.out.println("Received: "+strout);
}
else
System.out.println("Echo bad -- string unequal"+ strout);


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status