You are on page 1of 7

BÀI THỰC HÀNH LT MẠNG CƠ BẢN

GV: TS. Huỳnh Công Pháp


Khoa CNTT, ĐH Bách Khoa, ĐH Đà Nẵng
Mỗi sinh viên thực hiện tất cả các bài dưới đây.
Sau đó tạo 01 tệp .doc:
 có tên gồm Họtênsv_lớp.doc
 có nội dung gồm mã lệnh và màn hình kết quả (được chụp) dán ngay bên dưới
các bài tập.
Tất cả các bài làm sẽ được nộp lại sau buổi thực hành.

Thực hành TCP Socket

1. Chạy chương trình sau:


a. Server

import java.io.DataOutputStream;
import java.net.*;
import java.util.Date;
public class TimeServer {
public static void main(String[] args) throws Exception
{
ServerSocket server = new ServerSocket(7000);
System.out.println("Server is started");
Socket socket = server.accept();

DataOutputStream dos = new


DataOutputStream(socket.getOutputStream());

while(true) {
String time = new Date().toString();
dos.writeUTF("Server tra lai ngay gio="+time);

}
socket.close();
}
}

b. Client
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;

public class TimeClient {


public static void main(String[] args) throws Exception
{
Socket socket = new Socket("localhost", 7000);

DataInputStream din = new


DataInputStream(socket.getInputStream());
String time = din.readUTF();
System.out.println(time);

}
}

2. Thay đổi chương trình ở bài 1 sao cho cứ mỗi giây chương trình Server trả về cho
client thời gian mới. Chương trình Server có khả năng phục vụ nhiều client (chương trình
Multi-threading).
3. Từ chương trình trên tạo một đồng hồ điện tử phía client và cho phép người dùng chọn
thành phố. Thời gian cập nhật được gửi về từ Server sau mỗi giây (chương trình Multi-
threading).
4. Chạy chương trình sau:
a. Server
import java.io.*;
import java.util.*;
import java.net.*;
/*Chuong trinh chat don gian
Server nhan message tu Client
*/
public class SimpleChatServer {
public static void main(String[] args) throws Exception
{
ServerSocket server = new ServerSocket(7000);
System.out.println("Server is started");

Socket socket = server.accept();


DataOutputStream dos = new
DataOutputStream(socket.getOutputStream());

DataInputStream din = new


DataInputStream(socket.getInputStream());

//nhap chuoi de gui den client


Scanner kb = new Scanner(System.in);

while(true) {
//nhan du lieu tu client
String st = din.readUTF();
System.out.println(st);
System.out.print("Server: ");
String msg=kb.nextLine();

dos.writeUTF("Server: "+msg);

dos.flush();

kb=kb.reset();

}
//socket.close();
}
}

b. Client
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.*;

/*Chuong trinh chat don gian


*Cient nhan chuoi tu ban phim gui den server
*Nhan du lieu tu server
*/
public class SimpleChatClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 7000);
DataInputStream din = new
DataInputStream(socket.getInputStream());

DataOutputStream dos = new


DataOutputStream(socket.getOutputStream());

//nhap chuoi de gui den sever


Scanner kb = new Scanner(System.in);

while(true) {

System.out.print("Client: ");
String msg=kb.nextLine();

dos.writeUTF("Client: "+msg);
dos.flush();

//nhan du lieu tu server


String st = din.readUTF();
System.out.println(st);

kb = kb.reset();
}

5. Dựa vào bài 4, viết chương trình client cho phép người dùng nhập vào 2 số thực và
một phép toán (+, -, *, /) rồi gửi đến chương trình Server. Chương trình Server thực hiện
tính toán kết quả dựa vào phép toán tương ứng và trả kết quả cho chương trình Client. Mỗi
lần tính toán được, server đều lưu kết quả xuống CSDL.
6. Viết chương trình chat cho phép các client gửi dữ liệu nhập từ bàn phím qua lại. (Sử
dụng Multi-threading).
7. Phát triển bài 6, chương trình server có kết nối CSDL để quản lý accounts người dùng.
Thực hành UDP Socket

1. Chạy chương trình sau:


a. Server

import java.io.*;
import java.net.*;
import java.util.*;

class UDPTimeServer
{
public static void main(String args[]) throws Exception
{
//Gan cong 9876 cho chuong trinh
DatagramSocket serverSocket = new DatagramSocket(9876);
//Tao cac mang byte de chua dl gui va nhan
System.out.println("Server is started");
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
//Tao goi rong de nhan du lieu tu client
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);

//Nhan dl tu client
serverSocket.receive(receivePacket);
//Lay dia chi IP cua may client
InetAddress IPAddress = receivePacket.getAddress();
//Lay port cua chuong trinh client
int port = receivePacket.getPort();
//Lay ngay gio de gui nguoc lai client
String request = new String(receivePacket.getData());
System.out.println(request);
if(request.trim().equals("getDate"))
sendData = new Date().toString().getBytes();
else sendData = "Server not know what you want?".getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData,


sendData.length, IPAddress, port);

//Gui dl lai cho client


serverSocket.send(sendPacket);
}
}
}

b. Client
import java.io.*;
import java.net.*;
class UDPTimeClient
{
public static void main(String args[]) throws Exception
{
DatagramSocket clientSocket = new DatagramSocket();//gan cong
dong

InetAddress IPAddress = InetAddress.getByName("localhost");


byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
sendData = "getDate".getBytes();

//tao datagram co noi dung yeu cau loai dl de gui cho server
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
9876);

clientSocket.send(sendPacket);//gui dl cho server

//tao datagram rong de nhan dl


DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);//nhan dl tu server

String str= new String(receivePacket.getData());//lay dl tu packet


nhan duoc
System.out.println(str);
clientSocket.close();
}
}

2. Thay đổi chương trình ở bài 1 sao cho cứ mỗi giây chương trình Server trả về cho
client thời gian mới
3. Thay đổi chương trình ở bài 1, cho phép người dùng nhập vào loại yêu cầu (Day,
Month, Year, Hour, Minute, Second), dựa vào loại yêu cầu Server trả về cho client thời
gian mới
4. Từ chương trình trên tạo một đồng hồ điện tử phía client. Thời gian cập nhật được gửi
về từ Server sau mỗi giây.
5. Nâng cấp bài 4 cho phép người dùng chọn thành phố (New York, Hanoi, Tokyo, Paris,
Jakarta, Seoul).
6. Dựa vào bài 4 trong bài thực hành TCP, viết chương trình client cho phép người dùng
nhập vào 2 số thực và một phép toán (+, -, *, /) rồi gửi đến chương trình Server.
Chương trình Server thực hiện tính toán kết quả dựa vào phép toán tương ứng và trả
kết quả cho chương trình Client.
7. Viết chương trình chat UDP cho phép các client gửi dữ liệu nhập từ bàn phím qua lại.
Chương trình server có kết nối CSDL để quản lý accounts người dùng.
Thực hành URL

1. Chạy chương trình sau sử dụng đối số dòng lệnh để nhập chuổi URL

import java.net.*;

public class net2


{
public static void main(String arg[ ])
{
int i;
BufferedInputStream bis;
try
{
URL u = new URL(arg[0]);
bis = (BufferedInputStream)u.getContent( );
while((i = bis.read( )) > 0)
System.out.print((char)i);
System.out.println( );
}
catch(MalformedURLException e)
{
System.out.println(e);
}
catch (IOException e)
{
System.out.println(e);
}
}
}

2. Viết chương trình Client-Server. Chương trình client có giao diện cho phép người
dùng chọn tên thành phố trên thế giới rồi gửi cho chương trình server (danh sách các
thành phố được chương trình server gửi về khi client khởi động (server đọc tên thành
phố từ Website The World Clock)). Chương trình server truy cập website về The World
Clock – Time Zone (http://www.timeanddate.com/worldclock/) để lấy thời gian rồi trả
về cho client hiển thị lên màn hình.
3. Viết chương trình Client-Server. Chương trình client có giao diện cho phép người
dùng chọn tên thành phố trên thế giới rồi gửi cho chương trình server (danh sách các
thành phố được chương trình server gửi về khi client khởi động (server đọc tên thành
phố từ Website Weather around the World)). Chương trình server truy cập website về
The Weather around the World (http://www.timeanddate.com/weather/) để lấy thông
tin dự báo thời tiết rồi trả về cho client hiển thị lên màn hình.
4. Viết chương trình Client-Server. Chương trình client hiển thị thông tin (news) tổng
hợp gửi về từ server. Chương trình server truy cập website (do người dùng cấu hình)
đọc thông tin gửi về cho client.

You might also like