Bên cạnh đó, việc sử dụng lớp UdpClient trong .NET Framework giúp đơn giản hóa việc triển khai các chức năng gửi và nhận dữ liệu giữa các máy trong mạng.. Ứng dụng chat này sẽ được thiết
Trang 1- BỘ GIÁO DỤC VẢ ĐÀO TẠO _ TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á KHOA: CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN HỌC PHẢN: LẬP TRÌNH MẠNG
DE SO 23: TEN DE TAI: TRAO ĐỎI VĂN BẢN GIỮA 2 FORM SỬ DỤNG
UDP CLIENT SOCKET TRÊN WINDOW FORM
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO „ TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á KHOA: CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN HỌC PHẢN: LẬP TRÌNH MẠNG
Nhóm: 1
DE SO 23: TEN DE TAI: TRAO ĐỎI VĂN BẢN GIỮA 2 FORM SỬ DỤNG
UDP CLIENT SOCKET TREN WINDOW FORM
MA sinh vién | Diém bang
SỐ
Trang 3
MỤC LỤC
¡0909 2 cece cece eee n nec e erie cent nn E See Soa EE EES tae teas eaetiaeeesesesteeeeetiteeentieeees 1
LỜI MỞ ĐẦU 56-2212 2212221122122212111 1122111111121 1e 2 CHƯƠNG I: CƠ SỞ LÝ THUYÊT 252: 22222222312211225122512112112221211221 212.12 ty 4
1.1 Các cơ sở lý thuyẾt - c cct n1 1 TH 1112121112121 1g ng tưêu 4
1.2 Mô hình Server/C Ìienit L1 2 1222121211211 1211152115111 11110115 1111155811115 k kg 7
1.3 Sơ đồ luồng thực hiện của Šerver/CcÏI€TI 2 2c c1 ng s2 8
1.4 Multi Threading - c2 222112211111 11121112111 111181210111 1118111111511 khe 10
1.5 Cac thư việc được khai báo trong chương trỉnh - c c2 xe sexke2 12 1.6 Các nhóm lệnh khởi tạo cho Server/ CÏI€fii ccnnn HS SH n2 13
PM na (ÁaAđ 20 P2 20412010 an ố ố 34
CHƯƠNG III: KET QUA THUC NGHIEM CHUONG TRÌNH 5c scerse2 43
3.1 Tổng quan các giao điện - St 2x E1 1121111 0111121111 1 111012111 n re 43
KẾT LUẬẬN - 22:25: 22222212221122112211 2112271211221 2112111111221 ru 47 09009) 0n"
TẠI LIEU THAM KHẢO Q.2 00200201121 12111111111 111111111111 11111 11H KT ky cua 30
Trang 4LỜI MỞ ĐẦU
Trong bối cảnh công nghệ thông tin ngày càng phát triển, việc trao đôi thông tin một cách nhanh chóng và hiệu quả trở thành một yêu cầu thiết yếu Ứng dụng chat, một công cụ giao tiếp phô biến, đã chứng minh được vai trò quan trọng trong việc kết nối con người, đặc biệt là trong môi trường mạng nội bộ (LAN) Đề tài "Ứng dụng chat giữa hai máy - UDP Windows Form" nhằm mục tiêu phát triển một ứng dụng chat đơn giản giữa hai máy tính trong mạng LAN, sử dụng giao thức UDP (User Datagram Protocol) và lớp hỗ trợ UdpClient trên nền tảng Windows Form
Giao thức UDP được chọn vì tính năng truyền tải nhanh chóng, không đòi hỏi quá trình thiết lập kết nổi phức tạp như giao thức TCP Bên cạnh đó, việc sử dụng lớp UdpClient trong NET Framework giúp đơn giản hóa việc triển khai các chức năng gửi và nhận dữ liệu giữa các máy trong mạng
Ứng dụng chat này sẽ được thiết kế theo mô hình client/server, trong đó một máy đóng vai trò là server và máy còn lại là client Giao diện người dùng sẽ được xây dựng bằng
Windows Form, đảm bảo tính thân thiện và dễ sử dụng
Thông qua việc phát triển ứng dụng này, chúng tôi hy vọng sẽ mang lại một công cụ giao tiếp hiệu quá trong mạng LAN, đồng thời cung cấp một ví dụ minh họa cụ thê về cách sử dụng giao thức UDP và lớp UdpClient trong lập trình mạng
Trang 5Phân công công việc
STT Tén thanh vién Nhiém vu Danh gia
Trang 6CHUONG I: CO SO LY THUYET
1.1 Các cơ sở lý thuyết
1.1.1 Giao thức UDP (User Datagram Protocol)
Khái niệm và đặc điểm: UDP là giao thức không đảm bảo độ tin cậy, không cần thiết lập kết nối trước khi truyền dữ liệu Nó được sử dụng cho các ứng dụng cần truyền dữ liệu
nhanh mà không cần quan tâm đến việc mắt dữ liệu hay thứ tự dữ liệu.F)
Sự khác biệt giữa UDP và TCP: So với TCP, UDP không đảm bảo độ tin cậy, không có
cơ chế kiểm tra lỗi hoặc xác nhận nhận dữ liệu Điều này làm cho UDP thích hợp cho các
ứng dụng cần độ trễ thấp và có thê chấp nhận một số dữ liệu bị mắt P]
1.1.2 Socket Programming
Socket là gì: là một khái niệm cực ky quan trọng trong lập trình mạng, đóng vai trò trung tâm trong việc thiết lập và quản lý các kết nối giữa các thiết bị và ứng dụng trên mạng Được coi là cầu nối giữa các ứng dụng và hệ thông, socket cho phép dữ liệu được truyền
tải một cách an toàn và hiệu quả qua mang Internet ©!
Cơ chế hoạt động của SocketP”
Socket là một đối tượng trong các ngôn ngữ lập trình như Java, C#, được sử dụng để tạo
ra các kết nối mạng Có hai loại chính cua socket:
cách gửi dữ liệu nhanh hơn mà không đảm bảo độ tin cậy UDP phù hợp cho các ứng
dụng cần truyền tải dữ liệu nhanh và không cần đảm bảo mọi gói tin đều đến đích
Các bước cơ bản để sử dụng socket trong một ứng dụng mạng bao gồm:
° Tao socket: Mỗi socket được xác định bởi một địa chí IP và một số công (port
number) Địa chỉ IP cho biết địa chỉ của máy tính, còn công xác định quy tắc giao tiếp trên máy tính đó
máy tính Điều này giúp xác định nơi mà đữ liệu sẽ được gửi đến khi nó đến với socket này
các kết nôi đến từ các client socket khác
Trang 7` Gửi và nhận dữ liệu: Sau khi thiết lập kết nối, hai socket có thê gửi và nhận dữ liệu
qua kênh kết nối này
không còn cần thiết đến kết nổi nữa, các socket có thể đóng kết nối để giải phóng tài nguyên hệ thống
1.1.3 Windows Form và thực hiện đồ hoạ người dùng
Windows Fơm: Là một phần của NET Framework cho phép xây dựng giao diện người dùng trên Wmdows Các điều khiển như TextBox, Button được sử dụng dé tao giao dién
va xr ly su kién ©
Sự kiện và Xử lý sự kiện: Sử dụng các sự kiện nhu TextChanged đề theo dõi thay đổi trên
TextBox, Click đề xử lý sự kiện khi người dùng nhắn nút gửi tin nhắn
1.1.4 Triển khai mã nguồn
Server: Đám nhiệm vai trò lắng nghe và xử lý tin nhắn từ client, gửi lại phản hồi khi cần
thiết
° Sử dụng UdpClient đề nhận và gửi dữ liệu qua UDP
° Str dung lung (thread) dé lắng nghe các kết nồi và xử lý tin nhắn đồng thời
Client: Két néi tới server, gui tin nhắn và nhận tin nhắn từ server
° Sử dụng UdpClient đề gửi và nhận dữ liệu
e Su dung luồng (thread) để nhận dữ liệu từ server một cách liên tục
1.1.5 Đảm bảo tính nhất quán và xử lý ngoại lệ
Xử lý trạng thái server: Server cần thông báo cho client khi bắt đầu và kết thúc hoạt động
dé client biết được khi nào có thể gửi tin nhắn F]
Xử lý ngoại lệ: Xử lý các tình huống có thể xảy ra như mất kết nối, lỗi trong quá trình gửi/nhận dữ liệu °!
1.1.6 Mở rộng ứng dụng
Hỗ trợ nhiều chent: Điều chỉnh mã nguồn đề hồ trợ nhiêu client kêt nội và trao đối dữ liệu
với server một cách đông thời và hiệu quả hơn
1.1.7 Công nghệ sử dụng
Trang 8IDE chính đề phát triển ứng dụng trên nền NET
Cung cấp trình biên dịch, trình gỡ lỗi và các công cụ hỗ trợ lập trình
1.1.8 Phần mềm sử dụng
Bộ công cụ cần thiết để phát triển và triển khai ứng dụng NET
Bao gồm các lệnh và thư viện hỗ trợ việc xây dựng, chạy và quản lý ứng dụng.1.2 Mô hình Server/Clhient
1.2.1 Mô hình kết nối Server — Client
Mô hình client-server là một trong những mô hình quan trọng nhất trong lĩnh vực lập trình mạng Mô hình này tập trung vào việc phân tách rõ ràng hai vai trò chính trong một
hệ thống mạng: client và server ©!
Client la máy tính hoặc thiết bị yêu cầu dịch vụ từ server Client có thể gửi các yêu cầu khác nhau tới server để lay thông tin, xử lý dữ liệu, hoặc thực hiện các tác vụ cụ thê Server là máy tính hoặc thiết bị cung cấp các dịch vụ cho client Server có nhiệm vụ tiếp
nhận yêu câu từ client, xử lý va đáp ứng các yêu cầu này một cách hiệu quả và an toàn ©!
1.2.2 Nguyên lý hoạt động của mô hình Server/Client
Mô hình client-server hoạt động theo các bước cơ bản sau:
Kết nối và xác thực: Client kết nối đến server thông qua một giao thức nhất định (ví dụ như HTTP, FTP, SSH) và xác thực bản thân với server nếu cần thiết Quá trình này đảm
bảo tính bảo mật và quyền truy cập của người dùng ©!
Gửi yêu cầu: Sau khi kết nối thành công, client gửi các yêu cầu cụ thê tới server Yêu cầu
có thê là yêu cầu lay đữ liệu, yêu cầu thực hiện một tác vụ nào đó, hoặc yêu cầu truyền dữ
liệu F
Xử lý yêu cầu: Server nhận yêu cầu từ client và thực hiện xử lý dựa trên yêu cầu đó Quá
trình xử lý có thể bao gồm truy xuất dữ liệu từ cơ sở dữ liệu, tính toán, xử lý logic, và các hoạt động khác tùy thuộc vào mục đích của ứng dụng mà server cung cấp F)
Trả kết quá cho client: Sau khi hoàn thành xử lý, server tra lại kết quả cho client thông
qua kết nói đã thiết lập trước đó Kết quả có thé la dữ liệu yêu câu, thông báo lỗi (nếu có),
hoặc kết quả của các tác vụ đã thực hiện F
1.3 Multi Threading
Trang 9Multi-threading là một kỹ thuật quan trong trong lập trình mạng, cho phép các ứng dụng
xử lý đồng thời nhiều công việc khác nhau trên cùng một thời điểm Điều nảy giúp tận
dụng hiệu quả các tài nguyên có sẵn trên hệ thống như CPU và I/O, cải thiện hiệu suất và
đáp ứng của ứng dụng Đề hiểu rõ hơn về multi-threading, ta cần tìm hiểu về lý thuyết cơ
bản, ứng dụng thực tế và những thách thức đi kèm '°
Cơ bản về Multi-threading
Multi-threading là khả năng của một ứng dung dé tao ra và thực thi nhiều luồng (threads) độc lập cùng một lúc trong cùng một quá trình (process) Mỗi luồng thực thi có thể thực hiện các tác vụ khác nhau mà không bị ảnh hưởng bởi các luồng khác, nhưng chúng có thể chia sẻ cùng một bộ nhớ và tài nguyên hệ thống Điều này cho phép ứng dụng chia nhỏ các tác vụ lớn thành các phần nhỏ hơn và thực thi chúng đồng thời, tận dụng sức
mạnh song song của hệ thông ©!
Một số khái niệm quan trọng trong multi-threading bao gồm:
` Thread: Là một đơn vị nhỏ nhất của xử lý đa luồng trong hệ điều hành Mỗi thread
có một luồng thực thi độc lập và có thể thực hiện các công việc khác nhau
việc với nhau một cách an toàn khi chia sẻ tài nguyên chung Điều này thường được đạt duoc théng qua cac co ché nhu locks, mutexes, va semaphores dé dam bao tinh toan ven
và tin cậy của dữ liệu
một lúc Multi-threading giúp tận dụng concurrency dé cải thiện hiệu suất và phản hồi của ứng dụng
Ứng dụng thực tế của Multi-threading trong lập trình mạng
Multi-threading được áp dụng rộng rãi trong các ứng dụng mạng đề giải quyết các vấn đề như:
mạng khác có thể sử dụng multi-threading đề xử lý đồng thời nhiều yêu cầu từ người
dùng mà không cần phải chờ đợi lần lượt
nên dễ dàng hơn Ví dụ, một ứng dụng có thể đồng thời tải dữ liệu từ nhiều nguồn, xử lý
dữ liệu đầu vào và hiển thị kết quả cho người dùng.
Trang 10Tối ưu hóa hiệu suất: Bằng cách sử dụng multi-threading, các ứng dụng có thê tận dụng
được nhiều core của CPU và phân phối công việc hiệu quả hơn, từ đó cải thiện hiệu suất
và thời gian đáp ứng của hệ thông
1.5 Các thư việc được khai báo trong chương trình
1.5.1 Thư viện “Šystem.Net.Socket”
Thư viện System.Net.Sockets cung cấp các lớp và phương thức để thực hiện các hoạt động liên quan đến giao tiếp mạng, bao gồm TCP và UDP Trong mã của bạn, lớp
UdpClient được sử dụng đề tạo và quản lý kết nối UDP ?Ì
thức UDP Nó cũng cho phép bạn thiết lập và quản lý các công mạng
1.5.2 Thu vién “System.Net”
Thư viện System.Net chứa các lớp và giao diện đề làm việc với các địa chi IP, giao thức
19]
mang va giao tiép mang
° IPAddress: Được sử dụng dé biéu dién mét dia chi IP
1.5.3 Thu vién “System.Net.Forms”
Thư viện System.Windows.Forms cung cap cac lép va phương thức để xây dựng giao điện người dùng Windows
người dùng
Trang 111.6 Các nhóm lệnh khởi tạo cho Server/ Client
1.6.1 Đối với Server
1.6.1.1 Khởi tạo Server, UdpClient và các biến chính
private UdpClient udpServer;
private IPEndPoint remoteEndPoint;
private List<IPEndPoint> clientEndPoints;
private bool isRunning;
- private UdpClient udpServer;
« - Mô tả: Biên này đại diện cho một UDP (User Datagram Protocol) client, sé dugc
sử dụng đề gửi và nhận các gói UDP Trong ngữ cảnh của một máy chủ, UdpClient này sẽ được gắn với một công cụ thê và sẽ lắng nghe các gói UDP đến từ các
client
- private [PEndPoint remoteEndPoint;
e Loai: [PEndPoint
công Thường được sử dụng dé chỉ định đích đến của dữ liệu gửi đi hoặc nguồn của dữ liệu nhận vẻ Trong ngữ cảnh này, nó có thê là một client hoặc server từ xa
mà máy chủ UDP sẽ giao tiếp
- private [PEndPoint remoteEndPoint;
e« Loai: List<IPEndPoint>
« - Mô tả: Biến này là một danh sách các đối trong IPEndPoint Méi IPEndPoint
trong danh sách đại diện cho một điểm cuối của client Máy chủ có thể sử dụng danh sách này đê theo dõi nhiều client, hữu ích cho việc gửi phán hồi lai cho tat cả các client kết nối hoặc cho các mục đích khác như gửi thông báo đến nhiều client
- private bool isRunning;
« - Mô tả: Biến này là một cờ boolean cho biết máy chủ UDP hiện tại có đang chạy hay không Nó được sử dụng để kiêm soát vòng lặp chính của máy chủ, cho phép
nó bắt đầu và dừng lại một cách hợp lý
Trang 12Giải Thích Cách Sử Dụng
- - udpServcr: Dây là thành phần chính để xử lý giao tiếp UDP Nó sẽ được khởi tạo
đề lắng nghe trên một công cụ thê và sẽ xử lý việc gửi và nhận các gói UDP
mà máy chủ đang giao tiếp Điều này hữu ích trong các tinh huồng khi máy chủ cần phản hồi đến các client cụ thể
« - chentEndPoints: Danh sách này sẽ duy trì tất cả các client đã giao tiếp với máy chủ Nó cho phép máy chủ gửi tin nhẫn đến nhiều client, duy trì danh sách các client đã kết nối hoặc quản lý thông tin cụ thê của từng client
« _ isRunning: Cờ này kiểm soát hoạt động của máy chủ Khi được đặt là true, máy chủ sẽ chạy vòng lặp chính của nó, xử lý các gói nhận được và có thể gửi phản hồi Khi được đặt là false, máy chủ sẽ ngừng hoạt động, hữu ích đề dừng máy chủ một cách hợp ly
1.6.2 Đối với Client
1.6.2.IKhởi tạo Client UdpClient và Biến Chính
private UdpClient udpClient;
private IPEndPoint serverEndPoint;
private IPEndPoint localEndPoint;
- private UdpClient udpClient;
gửi và nhận các gói UDP từ một máy chủ Dây là thành phân chính trong việc thiết lập kết nói từ phía client đến một máy chủ UDP
- private [PEndPoint serverEndPoint;
e Loai: [PEndPoint
số công Nó được sử dụng dé xác định đích dén ma client sé gửi các gói UDP tới, nghĩa là địa chỉ và công của máy chủ UDP mà client sẽ kết nôi
Trang 13Sfream trong lập trình mạng, đặc biệt là trong ngữ cảnh của TCP (Transmission Control Protocol) va UDP (User Datagram Protocol), đề cập đến cách thức truyền tải dữ liệu qua
mạng giữa các thiết bị và ứng dụng
Stream trong UDP
UDP là một giao thức truyền tai dữ liệu không dam báo thứ tự và không đảm bảo tính chính xác cao Vì vậy, stream trong UDP có những đặc điểm khác biệt so với TCP:
như TCP Mỗi gói tin trong UDP là độc lập với các gói tin khác, và không có cơ chế tự
động dé dam bảo thứ tự hoặc tin cậy của dữ liệu
° Không có xác nhận và tái phát tự động: UDP không có cơ chế xác nhận nhận dữ
liệu (acknowledgement) và tái gửi dữ liệu (retransmission) như TCP Do đó, nếu một gói tin bị mat trên đường truyền, không có cơ chế nào đê UDP biết và tái gửi lại
bảo tính tin cậy cao như TCP, UDP thường được sử dụng trong các ứng dụng cần độ trễ thấp và tốc độ truyền tải nhanh như trò chơi trực tuyến, streaming media và Voice over [P (VoIP)
Trang 14CHUONG II: XAY DUNG UNG DUNG SERVER/CLIENT
Đối với bài toán về việc xây dựng ứng dụng “Lập trình ứng dụng chat giữa hai máy trong mạng lan sử dụng giao thức Udp sử dụng lớp hỗ trợ UdpClient với các yêu cầu” thì nhóm
em đã phân tích và sử dụng các điều khiến trong Window Form sau đề tiễn hành thiết lập lên ứng dụng trao đổi văn bản giữa 2 form
Đối với Server:
- 1 listbox dé chira port và IP của client gửi tin nhắn đến( IstClients)
Server (btnSfartL1stening)
trao đổi tin hay không hoạt động (btnStopServer)
- I button khi click để xoá đi tất cả các lịch sử tin nhắn mà client gửi đến
(btnClearMessage)
- 1 button khi click dé xoa di tất cả các lịch sử các client nhắn đến mà client gửi đến
(btnClearClientList)
Đối véi Client:
và gửi tin đến Server (btnSend)
- 1 label để hiển thị nhãn dán Server IP
- 1 label để hiển thị nhãn dán Port
(btnConnect)
đối (btnDisconnect)
Trang 152.1.1 Thiết kế Form Server
Dựa vào các điều khiển được đưa ra như textbox, button, listbox thì server được nhóm em
tiến hành thiết kế như sau:
Trang 162.1.2 Thiết kế các chức năng cở bản của Server
2.1.2.1 Khai báo biến
private UdpClient udpServer;
private IPEndPoint remoteEndPoint;
private List<IPEndPoint> clientEndPoints;
private bool isRunning;
+) private UdpChient udpServer;
dụng đề lắng nghe các gói UDP từ các client và có thể gửi các gói phản hỏi lại cho các client
° Sử dụng: được khởi tạo dé lang nghe trên một công cụ thể Nó có thể được sử dụng
để nhận các gói dữ liệu từ client bằng phương thức ReceiveAsync và gửi dữ liệu phản hồi bằng phương thức Send
+) private IPEndPoint remoteEndPoint;
của client Nó cho biết địa chỉ nguồn của gói UDP nhận được hoặc địa chỉ đích của gói
UDP gửi đi
° Sử dụng: được cập nhật mỗi khi server nhận được một gói dữ liệu mới từ một
client, chứa thông tin về nguồn gửi
+) private List<IPEndPoint> clientEndPoints;
nối Mỗi phần tử trong danh sách là mot [PEndPoint dai dién cho một client
° Sử dụng: được cập nhật mỗi khi server nhận được gói dữ liệu từ một client mới
Nếu client đó chưa có trong danh sách, nó sẽ được thêm vào
+) private bool isRunning;
hay không Nó giúp kiểm soát vòng lặp chính của server
nghe và xử lý các gói dữ liệu Khi isRunning là true, server sẽ tiếp tục hoạt động Khi
Trang 17ung dung Windows Forms
du: Form! myForm = new Form1();
+) InitializeComponent()
° Chức năng: Phương thức này được tự động tạo ra bởi trình thiết kế Windows
Forms (Designer) dé khởi tạo các thành phần trên form
tạo và cầu hình tất cả các điều khiển (controls) trên form theo như được định nghĩa trong trình thiết kế (Designer)
+) clientEndPoints = new List<IPEndPoint>();
cua [PEndPoint
UDP
Trang 182.1.2.3 Nhận tin nhắn từ Client
private void ListenForMessages()
while (sRunning)
try
{
byte[] receivedBytes = udpServer.Receive(ref remoteEndPoint);
string receivedMessage = Encoding.UTF8.GetString(receivedBytes);
+) private void ListenForMessages()
isRunning la true Nhan và xử lý các gói tin UDP từ các client, cập nhật danh sách client
và hiển thị tin nhắn nhận được trên giao diện người dùng
các client Thường được gọi khi server được khởi động (StarfServer)
+) while (isRunning)
Trang 19° Chức năng: Vòng lặp chính của phương thức, giúp phương thức tiếp tục lắng nghe
và xử lý các gói tin UDP trong khi isRunning 1a true
gói tin cho đến khi server dừng (isRunning được đặt thành false)
+) byte[] receivedBytes = udpServer.Receive(ref remoteEndPoint);
remoteEndPoint với địa chỉ IP và công của client gửi gói tin
(remoteEndPoint)
+) string receivedMessage = Encoding UTF8.GetString(receivedBytes);
hoa UTF-8
xu ly
+) Kiém tra va cap nhat danh sach client:
chưa có, thêm remoteEndPoint vào danh sách clientEndPomts Cập nhật danh sách client trên giao diện người dùng (IstClients)
diện người dùng Cập nhật danh sách clientEndPoints và IstClients nếu có client mới kết nồi
+) Hiển thị tin nhắn nhận được:
° Chức năng: Thêm tin nhắn nhận được vào danh sách tin nhắn trên giao diện người
dung (IstMessages)
° Sử dụng: Cập nhật danh sách tim nhắn trên giao diện người dùng đề hiển thị tat ca
các tin nhắn nhận được từ các client (IstMessages)
Trang 202.1.2.4 Gửi tin từ lắng nghe tin nhắn
private void btnStartListening_Click(object sender, EventArgs e)
try
int port = int.Parse(txtPort.Text);
udpServer = new UdpClient(port);
remoteEndPoint = new IPEndPoint(IPAddress.Any, port);
+) private void binStartListening Click(object sender, EventArgs e)
° Chức năng: Đây là trình xử lý sự kiện (event handler) cho sự kiện nhân nút
btnStartListening Khi người dùng nhắn nút btnStartListening, phương thức này sẽ được gọi Phương thức này khởi động server UDP và bắt đầu lắng nghe các gói tin UDP
° Sử dụng: Phương thức này được gán làm trình xử lý sự kiện cho sự kiện Click của
nút btnStartListening Khi người dùng nhấn nút btnStartListening, phương thức này sẽ được gọi để khởi động server UDP
+) mt port = Int.Parse(txtPort Text);
đại điện cho công mà server UDP sẽ lắng nghe
nguyên, đại điện cho công mà server sẽ lắng nghe
+)udpServer = new UdpClient(port);