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

Hướng dẫn lập trình UDP socket giao tiếp client server

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 (578.93 KB, 6 trang )

Lập trình UDP Socket

LẬP TRÌNH ỨNG DỤNG UDP SOCKET TRÊN JAVA

Mục tiêu:
Sau bài thực hành này, sinh viên có thể:
-

Hiểu được mô hình hoạt động chung của ứng dụng mạng trên giao thức UDP.
Lập trình ứng dụng mạng với UDP socket trên ngôn ngữ Java.

Nội dung chính:
-

Mô hình hoạt động giao thức UDP
Một số hàm cơ bản của lớp DatagramSocket.
Minh họa ứng dụng mạng đơn giản sử dụng DatagramSocket.

BM MMT - Khoa CNTT – ĐH KHTN

Page 1


Lập trình UDP Socket

1. Mô hình hoạt động giao thức UDP (User Datagram Protocol)
-

Khi xây dựng một ứng dụng mạng, ta cần thực hiện các bước sau:
o Xác định kiến trúc mạng: Client-Server hay Peer-to-Peer.
o Giao thức được sử dụng ở tần Transport: TCP, UDP.


o Các port sử dụng ở Client và Server.
o Giao thức tần ứng dụng khi trao đổi dữ liệu.
o Lập trình.

-

Các phần dưới đây sẽ trình bày các bước cơ bản để xây dựng một ứng dụng mạng
theo kiến trúc Client-Server sử dụng giao thức UDP.

-

Có hai giao thức chính được dùng để truyền tải dữ liệu trong TCP/IP là TCP và
UDP.

-

Với ứng dụng mạng được thiết kế theo mô hình của giao thức UDP thuần túy, bên
gởi không có cơ chế để đảm bảo tín tin cậy của dữ liệu được truyền tải, nghĩa
là dữ liệu được truyền có thể bị mất, sai nội dung hoặc thứ tự nội dung nhận được
so với nội dung cần gởi sẽ bị đảo lộn.

-

Tuy nhiên, UDP được dùng trong các ứng dụng yêu cầu thời gian thực như truyền
tải Video, Audio,… vì khả năng truyền tải nhanh của nó.

-

Sơ đồ tương tác giữa Client và Server theo giao thức UDP như mô hình sau:


BM MMT - Khoa CNTT – ĐH KHTN

Page 2


Lập trình UDP Socket

Tạo socket để giao tiếp

Client

Server

Create
Socket

Create
Socket

Gởi dữ liệu đến server
tham số cần truyền vào
là địa chỉ IP và port mà
server đang lắng nghe

Send to

Nhận dữ liệu từ Server

Receive
from


Close

Đóng kết nối

Tạo socket lắng nghe

Bind

Kết buộc vào địa chỉ IP
và port

Receive
from

Nhận dữ liệu từ Client

Send to

Gởi dữ liệu đến client
tham số cần truyền vào
là địa chỉ IP và port mà
client đang sử dụng

Close

2. Lập trình UDP socket trên Java với lớp DatagramSocket:
-

DatagramSocket là lớp hỗ trợ lập trình ứng dụng UDP socket trên Java, phần

này sẽ giới thiệu một số phương thức cơ bản để có thể xây dựng được một ứng
dụng UDP socket.

a. Tạo DatagramSocket:
Public DatagramSocket()
Throws SocketException
o Khởi tạo UDP socket và kết buộc nó vào một trong những port còn trống
của hệ thống.
Public DatagramSocket( int port)
Throws SocketException
o Khởi tạo UDP socket và kết buộc nó vào một port cụ thể được chỉ ra.
BM MMT - Khoa CNTT – ĐH KHTN

Page 3


Lập trình UDP Socket

b. Kết buộc địa chỉ cho DatagramSocket
Public void bind ( SocketAddress addr)
Throws SocketException
o Kết buộc DatagramSocket vào một địa chỉ cụ thể (IP và port)
c. Gởi và nhận dữ liệu với DatagramSocket
DatagramSocket sử dụng lớp DatagramPacket để gởi và nhận các gói tin.
-

Nhận dữ liệu:
Public DatagramPacket ( byte []buf, int length)
o Khởi tạo 1 DatagramPacket dùng để nhận 1 packet có độ dài là length,
length phải nhỏ hơn hoặc bằng buf.length

o Buf: vùng nhớ đệm dùng để lưu dữ liệu sắp nhận.
o Length: số lượng byte sẽ được đọc.
Public void Receive (DatagramPacket p)
Throws IOException
o Thực hiện nhận về packet từ DatagramSocket, khi hàm này được gọi thành
công, buffer của DatagramPacket sẽ chứ nội dung dữ liệu nhận được. Đồng
thời DatagramPacket còn chứa thông tin về địa chỉ IP và port của bên gởi.
o Phương thức này khi gọi sẽ bị BLOCK cho đến khi có 1 DatagramPacket
được nhận.

-

Gởi dữ liệu:
Public DatagramPacket (byte []buf, int length, SocketAddress address)
Throws SocketException
o Khởi tạo 1 DatagramPacket để gởi 1 packet có độ dài là length đến cổng có
số hiệu port trên host cụ thể được chỉ ra trong address.

BM MMT - Khoa CNTT – ĐH KHTN

Page 4


Lập trình UDP Socket

Public void send ( DatagramPacket p)
Throws IOException
o Gởi DatagramPacket đến host nhận. DatagramPacket chứ dữ liệu cần gởi,
độ dài dữ liệu, địa chỉ IP và số hiệu port của host sẽ nhận.
-


Một số phương thức hỗ trợ khác của lớp DatagramPacket:
Public InetAddress getAddress()
o

Trả về địa chỉ IP của host đã gởi packet hoặc host sẽ nhận packet.
Public int getPort()

o Trả về giá trị port của host đã gởi packet hoặc host mà packet sẽ được gởi
đến.
Public byte[] getData()
o Trả về nội dung dữ liệu trong DatagramPacket
Public int getLength()
o Trả về độ dài của dữ liệu trong DatagramPacket
d. Đóng DatagramSocket :
Public void Close()
3. Minh họa ứng dụng mạng đơn giản sử dụng DatagramSocket
a. Đề bài:
Viết một ứng dụng mạng trên giao thức UDP hỗ trợ chat tuần tự giữa Client –
Server theo thứ tự Client  Server  Client  Server  Client  Server… bằng
Console. Quá trình chat sẽ kết thúc khi một trong hai bên gõ Exit.
o Xác định kiến trúc mạng: CLIENT – SERVER
o Giao thức sử dụng tần transport: UDP
BM MMT - Khoa CNTT – ĐH KHTN

Page 5


Lập trình UDP Socket


o Port lắng nghe phía server 1234
o Giao thức tầng ứng dụng khi trao đổi dữ liệu giữa client-server
b. Chương trình (tham khảo source code kèm theo)

Tài liệu tham khảo:
/> />
BM MMT - Khoa CNTT – ĐH KHTN

Page 6



×