Tải bản đầy đủ (.pdf) (7 trang)

welcome to nguyenhuuthe sites

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (584.06 KB, 7 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

1



<b>LẬP TRÌNH HỆ THỐNG MẠNG </b>


<b>TCP SOCKET </b>



<i><b>Nội dung chính: </b></i>



<i><b>- InputStream getInputStream() throws IOException: lấy về luồng nhập để máy khách (máy </b></i>


<i>chủ) có thể đọc dữ liệu trả về từ máy chủ (máy khách). </i>



<i><b>- OutputStream getOutputStream() throws IOException: lấy về luồng xuất để máy khách (máy </b></i>


<i>chủ) có thể ghi dữ liệu gửi đến máy chủ (máy khách). </i>



<i>- Ví dụ gửi chuỗi qua mạng, gửi số qua mạng. </i>



<b>Bài tập 1: Viết chương trình từ Client nhập một chuỗi “thường” bất kỳ và gửi yêu cầu đến Server </b>



xử lý và trả về kết quả chuỗi “HOA”



<b>Class TCPServerUpperCase.java </b>



<b>package</b> network.unit2;
<b>import</b> java.io.*;
<b>import</b> java.net.*;


<b>class</b> TCPServerUpperCase {


<b>public</b> <b>static</b> <b>void</b> main(String[] args) <b>throws</b> Exception {
<b>int</b> port = 9999;


System.out.println("Server khoi dong tai cong " + port);


ServerSocket server = <b>new</b> ServerSocket(port);


Socket client = server.accept();
<i>Thread.sleep(3000); </i>


System.out.println("Ket noi may khach thanh cong");


//br: bộ đệm nhận dữ liệu gửi đến từ client


BufferedReader br = <b>new</b> BufferedReader(<b>new</b> InputStreamReader(
client.getInputStream()));


//pw: gọi các phương thức gửi dữ liệu qua mạng của class PrintWriter


PrintWriter pw = <b>new</b> PrintWriter(client.getOutputStream());
String st = br.readLine();


<i>String kq = processData(st); </i>


System.out.println("Server dang xu ly...");
<i>Thread.sleep(3000); </i>


pw.write(kq + "\n"); //lệnh gửi dữ liệu đi


pw.flush();


System.out.println("Xong");
pw.close();


br.close();


client.close();
server.close();
}


<b>public</b> <b>static</b> String processData(String s){
<b>return</b> s.toUpperCase();


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

2


Class TCPClientUpperCase.java



<b>package</b> network.unit2;
<b>import</b> java.io.*;
<b>import</b> java.net.*;


<b>class</b> TCPClientUpperCase {


<b>public</b> <b>static</b> <b>void</b> main(String[] args) <b>throws</b> Exception {
<b>int</b> port = 9999;


String serverName = "localhost";


Socket server = <b>new</b> Socket(serverName, port);


System.out.println("Client dang ket noi den server");
<i>Thread.sleep(5000); </i>


//in: bộ đệm nhập liệu từ bàn phím


BufferedReader in = <b>new</b> BufferedReader(<b>new</b> InputStreamReader(System.in));



//br: bộ đệm nhận dữ liệu trả về từ server


BufferedReader br = <b>new</b> BufferedReader(<b>new</b>
InputStreamReader(server.getInputStream()));


//pw: gọi các phương thức gửi dữ liệu qua mạng của class PrintWriter


PrintWriter pw = <b>new</b> PrintWriter(server.getOutputStream());
System.out.print("Nhap mot chuoi : ");


String st = in.readLine();
pw.write(st + "\n");
pw.flush();


System.out.println("Client dang gui cho Server dang xu ly...");
<i>Thread.sleep(5000); </i>


String kq = br.readLine(); //nhận dữ liệu từ server gửi đến client


System.out.println("Chuoi ket qua: " + kq);
pw.close();


br.close();
server.close();
}


}


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

3


Kết quả thực thi có dạng:




Client



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

4



<b>Client </b>



<b>Bài tập 2: Nhập một chuỗi số từ Client, chuyển sang Server tính lũy thừa 2, trả kết quả về Client </b>



<b>TCPServerPower.java</b>
<b>package</b> network.unit2;
<b>import</b> java.io.*;
<b>import</b> java.net.*;
<b>class</b> TCPServerPower {


<b>public</b> <b>static</b> <b>void</b> main(String[] args) <b>throws</b> Exception {
<b>int</b> port = 9999;


System.out.println("Server khoi dong tai cong " + port);
ServerSocket server = <b>new</b> ServerSocket(port);


Socket client = server.accept();
<i>Thread.sleep(1000); </i>


System.out.println("Ket noi may khach thanh cong");


//br: bộ đệm nhận dữ liệu gửi đến từ client


BufferedReader br = <b>new</b> BufferedReader(<b>new</b> InputStreamReader(
client.getInputStream()));



//pw: gọi các phương thức gửi dữ liệu qua mạng của class PrintWriter


PrintWriter pw = <b>new</b> PrintWriter(client.getOutputStream());
String st = br.readLine();


<b>int</b><i> num = Integer.parseInt(st); </i>
<b>long</b><i> kq = processData(num); </i>


System.out.println("Server dang xu ly...");
<i>Thread.sleep(1000); </i>


<i>String strKq = String.valueOf(kq); </i>//chuyển số thành chuỗi để gửi


pw.write(strKq + "\n"); //lệnh gửi dữ liệu đi


pw.flush();


System.out.println("Xong");
pw.close();


br.close();
client.close();
server.close();
}


<b>public</b> <b>static</b> <b>long</b> processData(<b>int</b> num){
<b>return</b> num * num; //Lũy thừa 2


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

5




<b>TCPClientPower.java</b>


<b>package</b> network.unit2;


<b>import</b> java.io.*;


<b>import</b> java.net.*;


<b>class</b> TCPClientPower {


<b>public</b> <b>static</b> <b>void</b> main(String[] args) <b>throws</b> Exception {


<b>int</b> port = 9999;


String serverName = "localhost";


Socket server = <b>new</b> Socket(serverName, port);


System.out.println("Client dang ket noi den server");
<i>Thread.sleep(2000); </i>


//in: bộ đệm nhập liệu từ bàn phím


BufferedReader in = <b>new</b> BufferedReader(<b>new</b> InputStreamReader(System.in));
//br: bộ đệm nhận dữ liệu trả về từ server


BufferedReader br = <b>new</b> BufferedReader(<b>new</b>


InputStreamReader(server.getInputStream()));



//pw: gọi các phương thức gửi dữ liệu qua mạng của class PrintWriter
PrintWriter pw = <b>new</b> PrintWriter(server.getOutputStream());


System.out.print("Nhap mot so : ");
String st = in.readLine();


pw.write(st + "\n");
pw.flush();


System.out.println("Client dang gui cho Server dang xu ly...");
<i>Thread.sleep(2000); </i>


String kq = br.readLine(); //nhận dữ liệu từ server gửi đến client
System.out.println("Ket qua: " + kq);


pw.close();
br.close();
server.close();
}


}


<b>Bài tập 3: Viết chương trình tính tổng từ 1 đến N, với N được nhập từ Client. Server nhận yêu cầu </b>



từ Client xử lý và trả kết quả về Client.


<b>TCPServerSum.java </b>


<b>package</b> network.unit2;
<b>import</b> java.io.*;


<b>import</b> java.net.*;
<b>class</b> TCPServerSum {


<b>public</b> <b>static</b> <b>void</b> main(String[] args) <b>throws</b> Exception {
<b>int</b> port = 9999;


System.out.println("Server khoi dong tai cong " + port);
ServerSocket server = <b>new</b> ServerSocket(port);


Socket client = server.accept();


//br: bộ đệm nhận dữ liệu gửi đến từ client


BufferedReader br = <b>new</b> BufferedReader(<b>new</b> InputStreamReader(
client.getInputStream()));


//pw: gọi các phương thức gửi dữ liệu qua mạng của class PrintWriter


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

6



<b>int</b><i> num = Integer.parseInt(st); </i>
<b>int</b><i> kq = processData(num); </i>


<i>String strKq = String.valueOf(kq); </i>//chuyển số thành chuỗi để gửi


pw.write(strKq + "\n"); //lệnh gửi dữ liệu đi


pw.flush();
pw.close();
br.close();


client.close();
server.close();
}


<b>public</b> <b>static</b> <b>int</b> processData(<b>int</b> num){
<b>int</b> t = 0;


<b>for</b> (<b>int</b> i = 1; i <= num; i++) {
t += i;


}


<b>return</b> t;
}


}


<b>TCPClientSum.java </b>
<b>package</b> network.unit2;
<b>import</b> java.io.*;
<b>import</b> java.net.*;
<b>class</b> TCPClientSum {


<b>public</b> <b>static</b> <b>void</b> main(String[] args) <b>throws</b> Exception {
<b>int</b> port = 9999;


String serverName = "localhost";


Socket server = <b>new</b> Socket(serverName, port);



//in: bộ đệm nhập liệu từ bàn phím


BufferedReader in = <b>new</b> BufferedReader(<b>new</b> InputStreamReader(System.in));


//br: bộ đệm nhận dữ liệu trả về từ server


BufferedReader br = <b>new</b> BufferedReader(<b>new</b>
InputStreamReader(server.getInputStream()));


//pw: gọi các phương thức gửi dữ liệu qua mạng của class PrintWriter


PrintWriter pw = <b>new</b> PrintWriter(server.getOutputStream());
System.out.print("Nhap mot so : ");


String st = in.readLine();
pw.write(st + "\n");
pw.flush();


String kq = br.readLine(); //nhận dữ liệu từ server gửi đến client


System.out.println("Ket qua: " + kq);
pw.close();


br.close();
server.close();
}


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

7


<b>BÀI TẬP MỞ RỘNG</b>




4. Viết chương trình tính tích từ 1 đến N, với N được nhập từ Client. Server nhận yêu cầu từ


Client xử lý và trả kết quả về Client.



5. Viết chương trình đếm số lượng số lẻ từ 1 đến N, với N được nhập từ Client. Server nhận


yêu cầu từ Client xử lý và trả kết quả về Client.



6. Viết chương trình đếm số lượng số nguyên tố từ 1 đến N, với N được nhập từ Client. Server


nhận yêu cầu từ Client xử lý và trả kết quả về Client.



7. Viết chương trình đếm số ký tự khoảng trắng có trong chuỗi nhập từ Client. Server nhận yêu


cầu từ Client xử lý và trả kết quả về Client.



8. Viết chương trình chuyển ký tự đầu của mỗi từ sang chữ in hoa. Chuỗi nhập từ Client. Server


nhận yêu cầu từ Client xử lý và trả kết quả về Client.



</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×