Tải bản đầy đủ - 0 (trang)
Chương IV – Kết Nối SOCKET Sử Dụng UDP

Chương IV – Kết Nối SOCKET Sử Dụng UDP

Tải bản đầy đủ - 0trang

Tài Liệu Học Tập Lập Trình Mạng



Biên soạn : GV Bùi Tiến Trường – 0989995221



- Cú Pháp Lệnh Nhận Gói Tin Dữ Liệu :

//Khai Báo

int portSVR=2812;

DatagramSocket socket = new DatagramSocket(portSVR);

DatagramPacket packet;

byte [ ]data;

//Nhận Gói Tin

data = new byte[1024];

packet = new DatagramPacket(data,data.length);

socket.receive(packet);

String st = new String(packet.getData(),0,packet.getLength());



2, Gửi Gói Tin UDP :

- Lớp DatagramSocket cũng được sử dụng để gửi các gói tin. Khi gửi gói tin, ứng

dụng phải tạo ra một DatagramPacket, thiết lập địa chỉ và thông tin cổng, và ghi dữ

liệu cần truyền vào mảng byte.

- Nếu muốn gửi thơng tin phúc đáp thì ta cũng đã biết địa chỉ và số hiệu cổng của gói

tin nhận được. Mỗi khi gói tin sẵn sàng để gửi, ta sử dụng phương thức send() của lớp

DatagramSocket để gửi gói tin đi.



http://dontruongbt.spaces.live.com/



- 20 -



Tài Liệu Học Tập Lập Trình Mạng



Biên soạn : GV Bùi Tiến Trường – 0989995221



- Cú Pháp Lệnh Nhận Gói Tin Dữ Liệu :

//Khai Báo

int portSVR=2812;

DatagramSocket socket = new DatagramSocket(portSVR);

DatagramPacket packet;

byte [ ]data;

//đọc thơng tin CLIENT từ gói tin nhận được

InetAddress ipCLT = packet.getAddress();

int portCLT = packet.getPort();

//Gửi Gói Tin

data = st.getBytes();

packet = new DatagramPacket(data,data.length,ipCLT,portCLT);

socket.send(packet);



III, Trình Tự Hoạt Động Máy Chủ UDP :

1, Khai báo cổng kết nối và các biến làm việc :

int portSVR=2812;

DatagramSocket socket = new DatagramSocket(portSVR);

DatagramPacket packet;

byte [ ]data;

2, Nhận gói tin được gửi đến từ máy khách :

data = new byte[1024];

packet = new DatagramPacket(data,data.length);

socket.receive(packet);

String st = new String(packet.getData(),0,packet.getLength());

Dữ liệu nhận về là gói tin được chuyển sang kiểu chuỗi. Nếu muốn đưa sang kiểu DL

khác, ta sử dụng parse như sau :

double a = Double.parseDouble(st);

3, Đọc trong gói tin packet, để lấy ra IP và Port của máy khách.Thơng tin này giúp

máy chủ có thể biết gói tin được gửi đến từ máy nào và dùng nó để trả kết quả về máy

khách đó :

InetAddress ipCLT = packet.getAddress();

int portCLT = packet.getPort();

http://dontruongbt.spaces.live.com/



- 21 -



Tài Liệu Học Tập Lập Trình Mạng



Biên soạn : GV Bùi Tiến Trường – 0989995221



4, Viết hàm xử lý dữ liệu nhận được từ gói tin, hàm này tốt nhất được viết bên ngồi

hàm main() :

String kq = CHUHOA(st);

Hàm xử lý được viết bên ngoài hàm main() :

public static String CHUHOA(String st)

{

return st.toUpperCase();

}

5, Gửi trả kết quả xử lý về cho máy khách :

data = kq.getBytes();

packet = new DatagramPacket(data,data.length,ipCLT,portCLT);

socket.send(packet);

6, Kết thúc phiên làm việc của máy chủ :

socket.close();



IV, Trình Tự Hoạt Động Máy Khách UDP :

1, Khai báo các biến làm việc :

DatagramSocket socket = new DatagramSocket();

DatagramPacket packet;

byte [ ]data;

BufferedReader in = new BufferedReader(new

InputStreamReader(System.in));

String st;

2, Máy khách nhập dữ liệu cần xử lý vào từ bàn phím :

System.out.print("Nhap du lieu : ");

st = in.readLine();

3, Gửi dữ liệu đến máy chủ theo IP và cổng kết nối :

int portSVR = 2812;

InetAddress ipSVR = InetAddress.getByName("tên máy chủ");

data = st.getBytes();

packet = new DatagramPacket(data,data.length,ipSVR,portSVR);

socket.send(packet);

4, Nhận kết quả trả về từ máy chủ :

data = new byte[1024];

packet = new DatagramPacket(data,data.length);

socket.receive(packet);

String kq = new String(packet.getData(),0,packet.getLength());

5, In kết quả nhận được lên màn hình :

System.out.println(“KQ nhan duoc tu may chu la : " + kq);

http://dontruongbt.spaces.live.com/



- 22 -



Tài Liệu Học Tập Lập Trình Mạng



Biên soạn : GV Bùi Tiến Trường – 0989995221



6, Kết thúc phiên làm việc của máy Khách :

socket.close();



PHẦN BÀI TẬP THAM KHẢO

Bài 1 : Kết Nối TCP Sử Dụng Socket, chuẩn gửi nhận SỐ - SỐ

Trang Máy Chủ :

import java.io.*;

import java.net.*;

class TCPSS

{

public static void main(String[] args) throws Exception

{

int port = 2812;

ServerSocket server = new ServerSocket(port);

Socket client = server.accept();

BufferedReader br = new BufferedReader(new

InputStreamReader(client.getInputStream()));

PrintWriter pw = new PrintWriter(client.getOutputStream());

String st = br.readLine();

double so = Double.parseDouble(st);

double kqD = XuLy(so);

String kqS = String.valueOf(kqD);

pw.write(kqS + "\n");

pw.flush();

pw.close();

br.close();

client.close();

server.close();

}

public static double XuLy(double so)

{

return Math.pow(so,3);

}

}

Trang Máy Khách :

import java.io.*;

import java.net.*;

class TCPCS

http://dontruongbt.spaces.live.com/



- 23 -



Tài Liệu Học Tập Lập Trình Mạng



Biên soạn : GV Bùi Tiến Trường – 0989995221



{

public static void main(String[] args) throws Exception

{

int portS = 2812;

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

Socket server = new Socket(ipS,portS);

BufferedReader in = new BufferedReader(new

InputStreamReader(System.in));

BufferedReader br = new BufferedReader(new

InputStreamReader(server.getInputStream()));

PrintWriter pw = new PrintWriter(server.getOutputStream());

System.out.print("Nhap so bat ky : ");

double so = Double.parseDouble(in.readLine());

String st = String.valueOf(so);

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

pw.flush();

String kqS = br.readLine();

double kqD = Double.parseDouble(kqS);

System.out.println("Lap Phuong So = " + kqD);

pw.close();

br.close();

server.close();

}

}

Bài 2 : Kết Nối TCP Sử Dụng Socket, gửi nhận CHUỖI – CHUỖI

Trang Máy Chủ :

import java.io.*;

import java.net.*;

class TCPSC

{

public static void main(String[] args) throws Exception

{

int port = 2812;

ServerSocket server = new ServerSocket(port);

Socket client = server.accept();

BufferedReader br = new BufferedReader(new

InputStreamReader(client.getInputStream()));

PrintWriter pw = new PrintWriter(client.getOutputStream());

String st = br.readLine();

String kq = XuLy(st);

http://dontruongbt.spaces.live.com/



- 24 -



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

Chương IV – Kết Nối SOCKET Sử Dụng UDP

Tải bản đầy đủ ngay(0 tr)

×