Một số thư viện sử dụng trong lập trình ứng dụng mạng

Một phần của tài liệu Xây dựng phần mềm quản lý phòng máy thực hành trường đại học Hùng Vương (Trang 25 - 32)

a) Socket hướng kết nối (TCP Socket)

Thông qua giao diện này chúng ta có thể lập trình điều khiển việc truyền thông giữa hai máy sử dụng các giao thức mức thấp là TCP, UDP…

Socket là sự trừu tượng hóa ở mức cao, có thể tưởng tượng nó như là thiết bị truyền thông hai chiều gửi - nhận dữ liệu giữa hai máy tính với nhau.

Số hiệu cổng của socket:

Để có thể thực hiện được các giao tiếp, một trong hai quá trình cần phải công bố số hiệu cổng của socket mà mình sử dụng.

Mỗi một cổng giao tiếp thể hiện một địa chỉ xác định trong hệ thống. Khi quá trình được gán một số hiệu cổng nó có thể nhận dữ liệu đến cổng này từ quá trình khác.

•Đặc điểm của socket hướng kết nối:

- Có một đường kết nối ảo giữa 2 tiến trình.

- Một trong 2 tiến trình phải đợi tiến trình kia yêu cầu kết nối. - Có thể sử dụng để liên lạc theo mô hình Client/Server.

- Trong mô hinh Client/Server thì Server lắng nghe và chấp nhận một yêu cầu kết nối.

- Mỗi thông điệp gửi đều có xác nhận trở về. - Các gói tin chuyển đi tuần tự.

b) Socket không hướng kết nối (UDP Socket)

Hai tiến trình liên lạc với nhau không kết nối trực tiếp. Thông điệp gửi đi phải kèm theo địa chỉ của người nhận. Thông điệp có thể gửi nhiều lần.

Người gửi không chắc chắn thông điệp tới tay người nhận. Thông điệp gửi sau có thể đến đích trước thông điệp gửi trước.

c) Lớp TCPClient

Mục đích của lớp UDPClient là sử dụng cho lập trình với giao thức UDP, với giao thức này thì hai bên không cần phải thiết lập kết nối trước khi gửi do vậy mức dộ tin cậy không cao. Để đảm bảo độ tin cậy trong các ứng

dụng mạng người ta còn sử dụng một giao thức khác gọi là giao thức có kết nối: TCP (Transport Control Protocol).

Bảng 1.1. Một số phương thức sử dụng trong TCPClient.

Tên phương thức Mô tả

TCPClient () Tạo một đối tượng TCPClient. Chưa đặt thông số. TCPClient (IPEndPoint) Tạo một TCPClient và gắn cho nó một EndPoint

cục bộ (gán địa chỉ máy cục bộ và số hiệu cổng để sử dụng trao đổi thông tin về sau).

TCPClient(RemoteHost: String Int32)

Tạo một đối tượng TCPClient và kết nối đến một máy có địa chỉ và số hiệu cổng được truyền vào. RemoteHost có thể là địa chỉ IP chuẩn hoặc tên máy.

Available Cho biết số byte đã nhận về từ mạng và có sẵn để đọc.

Connect(RemoteHost, Port)

Kết nối đến một máy TCP khác có tên và số hiệu cổng.

Connected Trạng thái cho biết đã kết nối được đến Server hay chưa?

Close() Giải phóng đối tượng TCPClient nhưng không đóng kết nối.

Client Trả về socket ứng với TCPClient hiện hành.

GetStream() Trả về NetworkStream để từ đó giúp ta gửi hay nhận dữ liệu.

d) Lớp TCPListener (adsbygoogle = window.adsbygoogle || []).push({});

TCPListener là một lớp cho phép người lập trình có thể xây dựng các ứng dụng server (Ví dụ: SMTP Server, FTP Server, DNS Server, POP3 Server hay Server tự định nghĩa…) ứng dụng Server khác ứng dụng Client ở chỗ nó luôn luôn thực hiện lắng nghe và chấp nhận các kết nối đến từ Client.

Bảng 1.2. Các thành phần của lớp TCPListen.

Tên phương thức Mô tả

Int32)

TCPListener (IPAddress,Int32)

Tạo một TCPListener và lắng nghe các kết nối đến tại địa chỉ IP và cổng chỉ định.

TCPListener (IPEndPoint)

Tạo một TCPListener với giá trị EndPoint truyền vào.

AcceptTCPClient Chấp nhận một yêu cầu kết nối đang chờ (ứng dụng sẽ dừng tại câu lệnh này cho đến khi nào có một kết nối đến).

AcceptSocket Chấp nhận một yêu cầu kết nối đang chờ.

Pending Cho biết có kết nối nào đang chờ đợi không (True = có).

Start() Bắt đầu lắng nghe các yêu cầu kết nối. Stop() Dừng việc nghe.

e) Lớp UDPClient

Giao thức UDP (User Datagram Protocol hay User Define Protocol) là một giao thức phi kết nối có nghĩa là một bên có thể gửi dữ liệu cho bên kia mà không cần biết là bên đó có sẵn sàng hay chưa. Giao thức này không tin cậy bằng giao thức TCP nhưng tốc độ của nó nhanh và dễ cài đặt. Ngoài ra, với giao thức UDP ta còn có thể gửi được gói tin quảng bá đến nhiều máy.

Trong .Net, lớp UDPClient (Nằm trong System.NET.Sockets) đóng gói các chức năng của giao thức UDP.

Bảng 1.3. Các thành phần của lớp UDPClient.

Tên phương thức Mô tả

UdpClient () Tạo một đối tượng mới của lớp UDPClient. UdpClient

(AddressFamily)

Tạo một đối tượng mới của lớp UDPClient. Thuộc một dòng địa chỉ được chỉ định.

UdpClient (Int32) Tạo một UDPClient và gắn một cổng cho nó.

UdpClient (IPEndPoint) Tạo một UDPClient và gắn một IPEndPoint cho nó.

UdpClient(Int32,Address Family)

Tạo một UDPClient và gắn số hiệu cổng, AddressFamily.

UdpClient(String, Int32) Tạo một UDPClient và thiết lập với một máy trạm từ xa mặc định.

BeginReceive Nhận dữ liệu không đồng bộ từ máy tính từ xa. BeginSend Gửi không đồng bộ dữ liệu tới máy ở xa.

Close Đóng kết nối.

Connect Thiết lập một điều khiển mặc định.

EndReceive Kết thúc nhận dữ liệu không đồng bộ ở trên. EndSend Kết thúc việc gửi dữ liệu không đồng bộ ở trên. Receive Nhận dữ liệu (đồng bộ) do máy tính ở xa gửi. Send Gửi dữ liệu (đồng bộ) cho máy ở xa.

f) Socket không đồng bộ (adsbygoogle = window.adsbygoogle || []).push({});

Thông qua mô hình này ta có thể ủy nhiệm cho một thủ tục nào đó thực hiện khi sự kiện xảy ra trên Control.

Sử dụng Socket không đồng bộ:

- Để lập trình không đồng bộ với Socket chúng ta sử dụng các phương thức cho việc sử dụng bất đồng bộ.

- Các phương thức cho việc lập trình bất đồng được chia làm 2 loại bắt đầu bằng Begin và End:

+ Phương thức bắt đầu bằng Begin, bắt đầu một chức năng và được đăng ký với phương thức AsyncCallback.

+ Bắt đầu bằng End chỉ chức năng hoàn thành khi AsyncCallback được gọi.

Bảng 1.4. Một số phương thức sử dụng trong socket không đồng bộ.

Requests Started By … DescrIPtion of Request Requests Ended By BeginAccept () To accept an incoming

connection.

EndAccept ()

BeginConnect () To connect to a remote host. EndConnect () BeginReceive () To retrieve data from a socket. EndReceive () BeginReceiveFrom () To retrieve data from a

specific remote host.

BeginSend () To send data from a socket. EndSend () BeginSendTo () To send data to a specific

remote host.

EndSendTo ()

Để chấp nhận kết nối bất đồng bộ ta sử dụng phương thức BeginAccept() và EndAccept().

Để thiết lập kết nối theo cách bất đồng bộ chúng ta sử dụng phương thức BeginConnect() và Endconnect().

Nhận dữ liệu với giao thức hướng kết nối ta sử dụng phương thức BeginReceive() và EndReceive().

Gửi dữ liệu với giao thức hướng kết nối ta sử dụng phương thức BeginSend() và EndSend(). Gửi dữ liệu bất đồng bộ với giao thức không hướng kết nối ta sử dụng phương thức BeginSend() và EndSend().

Nhận dữ liệu bất đồng bộ với giao thức không hướng kết nối ta sử dụng phương thức BeginReceiveFrom(), EndReceiveFrom().

g) Sử dụng Thread trong các ứng dụng mạng

Đa nhiệm (Multitasking): là khả năng hệ điều hành làm nhiều công việc tại một thời điểm.

Tiến trình (Process): khi chạy một ứng dụng hệ điều hành sẽ cấp phát riêng cho ứng dụng đó bộ nhớ và các tài nguyên khác. Bộ nhớ và tài nguyên vật lý riêng biệt này được gọi là một tiến trình. Các tài nguyên và bộ nhớ của một tiến trình thì chỉ tiến trình đó được phép truy cập.

Tuyến (Thread ): trong hệ thống một tiến trình có thể có một hoặc nhiều chuỗi thực hiện tách biệt khác nhau và có thể chạy đồng thời. Mỗi chuỗi thực hiện này được gọi là một tuyến (Thread). Trong một ứng dụng Thread khởi tạo đầu tiên gọi là Thread sơ cấp hay Thread chính.

Bảng 1.5. Một số thuộc tính thường dùng.

Tên thuộc tính Mô tả

IsAlive Trả về giá trị cho biết trạng thái thực thi của thread hiện hành.

IsBackground Sets or gets giá trị cho biết là thread là background hay foreground thread.

IsThreadPoolThread Gets a value indicating whether a thread is part of a thread pool.

Priority Sets or gets giá trị để chỉ định độ ưu tiên (dành nhiều hay ít CPU cho thread). Cao nhất là 4, thấp nhất là 0. (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 1.6. Một số phương thức thường dùng.

Tên phương thức Mô tả

Abort () Kết thúc Thread.

Resume () Tiếp tục chạy thread đã tạm ngừng – suspended.

Join () Buộc chương trình phải chờ cho thread kết thúc (Block) thì mới thực hiện tiếp (các câu lệnh đứng sau Join).

Sleep () Là một phương thức tĩnh có tác dụng tạm dừng thread trong một khoảng thời gian.

Start () Bắt đầu chạy (khởi động) một thread. Sau khi gọi phương thức này, trạng thái của thread chuyển từ trạng thái hiện hành sang Running.

Suspend () Tạm ngừng thread. (phương thức này được loại khỏi phiên bản VS.NET 2005).

CHƯƠNG 2.

THỰC TRẠNG QUẢN LÝ PHÒNG MÁY VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Một phần của tài liệu Xây dựng phần mềm quản lý phòng máy thực hành trường đại học Hùng Vương (Trang 25 - 32)