1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo Lập trình mạng

24 497 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 455 KB
File đính kèm BaiTapLonLapTrinhMang.rar (2 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỤC LỤC BẢNGBảng 1: Các phương thức khởi tạo của lớp TcpClient...7 Bảng 2: Các thuộc tính của lớp TcpClient...7 Bảng 3: Các phương thức của lớp TcpClient...8 Bảng 4: Các phương thức khởi

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN

HƯNG YÊN - NĂM 2012

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN HƯƠNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Hưng Yên, ngày … tháng … năm 2012

Trang 3

MỤC LỤC

MỤC LỤC 3

MỤC LỤC BẢNG 4

MỤC LỤC HÌNH 5

LỜI MỞ ĐẦU 6

CHƯƠNG 1: LẬP TRÌNH MẠNG TRONG NET FRAMEWORK 7

1 Sử dụng các lớp hỗ trợ được xây dựng từ lớp Socket 7

2 Socket không đồng bộ 10

3 Sử dụng Thread trong các ứng dụng mạng 14

CHƯƠNG 3: CHƯƠNG TRÌNH SHARE DESKTOP 17

1 Giới thiệu giao thức Share Desktop: 17

2 Chương trình: 20

KÊT LUẬN 23

TÀI LIỆU THAM KHẢO 24

Trang 4

MỤC LỤC BẢNG

Bảng 1: Các phương thức khởi tạo của lớp TcpClient 7

Bảng 2: Các thuộc tính của lớp TcpClient 7

Bảng 3: Các phương thức của lớp TcpClient 8

Bảng 4: Các phương thức khởi tạo của lớp TcpListener 8

Bảng 5: Các phương thức trong lớp TcpListener 8

Bảng 6: Các phương thức khởi tạo của lớp UDPClient 9

Bảng 7: Các phương thức trong lớp UDPClient 9

Bảng 8: Các phương thức trong Socket 11

Bảng 9: Các phương thức sử dụng trong Thread 14

Bảng 10: Các thuộc tính thường dùng trong Thread 15

Bảng 11: Các phương thức sử dụng trong Threadpool 15

Trang 5

MỤC LỤC HÌNH

Hinh 1: Mô hình sử lý sự kiện của Windows 11

Hinh 2: Mô hình mạng của chương trình Share Desktop 17

Hinh 3: Giao thức của chương trình Share Desktop 18

Hinh 4: Giao diện server khi client kết nối thành công 20

Hinh 5: Giao diện server khi nhận file từ client 21

Hinh 6: Giao diện Client khi kết nối thành công với Server 21

Hinh 7: Giao diện Client khi gửi file đến Server 22

Trang 6

LỜI MỞ ĐẦU

Sự phát triển như vũ bão của ngành công nghệ thông tin kéo theo đó là các dịch

vụ mạng ngày càng phát triển, mở rộng và hoàn thiện hơn, tuy vẫn tồn tại nhiều khuyết điểm song không ít tiện lợi từ công nghệ đem lại cho xã hội loài người sự nhanh chóng và chính xác Thư điện tử dần thay thế thư tay, các cuộc hội nghị truyền hình với âm thanh hình ảnh trực tiếp giúp linh hoạt hóa công việc của tổ chức, đoàn thể Người bác sĩ không phải trực tiếp đứng tại phòng mổ vẫn có thể thực hiện ca phẫu thuật với sự chính xác cao, và độ an toàn tuyệt đối… còn rất nhiều lợi ích mà công nghệ thông tin đem lại cho chúng ta, vậy dựa vào đâu mà công nghệ có thể thực hiện được những điều tưởng chừng không thể trong một tích tắc như vậy?

Ngôn ngữ lập trình là một phần không thể thiếu trong việc xây dựng nên một thế giới công nghệ linh hoạt và mạnh mẽ Không gian làm việc Microsoft Net tổng hợp bởi bốn bộ ngôn ngữ lập trình: C#, VB.NET, Managed C++, and J# NET ở đó có

sự chồng gối lên nhau của các ngôn ngữ, và được định nghĩa trong FCL (framework class library) Hỗ trợ cho lập trình viên phát triển các ứng dụng mạng với kích thước nhẹ và mạnh mẽ trong xử lý

Dựa trên kiến thức lập trình mạng với C#, sự đa dạng của các dịch vụ mạng với nhiều tính năng và đòi hỏi ngày càng cao Từ ý tưởng xây dựng một chương trình

có khả năng tương tác với máy tính từ xa thông qua hệ thống mạng, chương trình Remote desktop được xây dựng, dựa theo mô hình Client-Server hỗ trợ các tính năng cơ bản tương tác với máy tính từ xa như tắt máy, khởi động lại máy, ngủ đông, khóa máy, chạy một số ứng dụng, gửi thông điệp, gửi một file hay lấy 1 file từ máy đang điều khiển… sử dụng ngôn ngữ lập trình C#

Trong quá trình xây dựng chương trình không tránh khỏi sai xót kính mong các thầy cô và các bạn đóng góp ý kiến xây dựng để nhóm hoàn thiện hơn Chúng em xin chân thành cảm ơn!

Trang 7

CHƯƠNG 1: LẬP TRÌNH MẠNG TRONG NET

là TCPClient và TCPListener

Các thành phần của lớp TcpClient

- Phương thức khởi tạo:

Bảng 1: Các phương thức khởi tạo của lớp TcpClient

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

- Một số thuộc tính:

Bảng 2: Các thuộc tính của lớp TcpClient

Name Description

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

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

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

- Một số phương thức:

Trang 8

Bảng 3: Các phương thức của lớp TcpClient

Name Description

Close Giải phóng đối tượng TcpClient nhưng không đóng kết nốiConnect

(RemoteHost, Port)

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

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

liệu ( thường làm tham số khi tạo StreamReader và StreamWriter)

Khi đã gắn vào StreamReader vá StreamWriter rồi thì ta có thể gửi và nhận dữ liệu thông qua các phương thức Readln, writeline tương ứng của các lớp này

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

Các thành phần của lớp TcpListener:

- Phương thức khởi tạo:

Bảng 4: Các phương thức khởi tạo của lớp TcpListenerConstructor method

Trang 9

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 liệu 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

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 đóng gói các chức năng của giao thức UDP

- Các phương thức khởi tạo:

Bảng 6: Các phương thức khởi tạo của lớp UDPClientConstructor method Description

UdpClient () Tạo một đối tượng (thể hiện) 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,

Trang 10

Name Description

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 default remote host

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

2 Socket không đồng bộ

2.1 Mô hình xử lý sự kiện của Windows

Mô hình sử lý sự kiện được thể hiện qua mô hình sau:

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 sảy ra trên Control

Trang 11

Hinh 1: Mô hình sử lý sự kiện của Windows

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

Bảng 8: Các phương thức trong SocketRequests 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

EndReciveFrom()

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() như sau:

- Phương thức BeginAccept() và EndAccept()

IAsyncResult BeginAccept(AsyncCallback callback, object state)

Socket EndAccept(IAsyncResult iar);

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

- Phương thức BeginConnect() và EndConnect()

Trang 12

Socket newsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

IPEndPoint iep =new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);

newsock.BeginConnect(iep, new AsyncCallback(Connected), newsock);

Trong đó phương thức Connected thường được viết như sau:

public static void Connected(IAsyncResult iar) {

Socket sock = (Socket)iar.AsyncState;

try {sock.EndConnect(iar);

} catch (SocketException) {

Console.WriteLine("Unable to connect to host");}

}

Để gửi dữ liệu bất đồng bộ chúng ta làm như sau:

- Phương thức BeginSend() và EndSend()

BeginSend()

IAsyncResult BeginSend(byte[] buffer, int offset, int size, SocketFlags sockflag, AsyncCallback callback, object state)

EndSend()

int EndSend(IAsyncResult iar)

Trong đó phương thức SendData thường được viết như sau:

private static void SendData(IAsyncResult iar) {

Socket server = (Socket)iar.AsyncState;

int sent = server.EndSend(iar);

Trang 13

IAsyncResult BeginSendTo(byte[] buffer,int offset,int size,SocketFlags sockflag, EndPoint ep, AsyncCallback callback, object state)

Để nhận dữ liệu bất đồng bộ ta thực hiện như sau:

- Nhận dữ liêu với giao thức hướng kết nối:

Phương thức BeginRecieve và EndRecive()

sock.BeginReceive(data, 0, data.Length, SocketFlags.None, new

AsyncCallback(ReceivedData), sock);

- Với ReceivedData được định nghĩa như sau:

void ReceivedData(IAsyncResult iar) {

Socket remote = (Socket)iar.AsyncState;

int recv = remote.EndReceive(iar);

string receivedData = Encoding.ASCII.GetString(data, 0, recv);

Console.WriteLine(receivedData);

}

- Nhận dữ liệu bất đồng bộ với giao thức không hướng kết nối

Phương thức BeginReceiveFrom() và EndReceiveFrom()

sock.BeginReceive(data,0,data.Length,SocketFlags.None,refiep,new AsyncCallback (ReceiveData) , sock);

void ReceiveData(IasyncResult iar){

Socket remote = (Socket)iar.AsyncState;

int recv = remote.EndReceiveFrom(iar);

string stringData = Encoding.ASCII.GetString(data, 0,

recv);

Console.WriteLine(stringData);

}

Trang 14

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à 1 tuyến (Thread) Trong 1 ứng dụng Thread khởi tạo đầu tiên gọi là Thread sơ cấp hay Thread chính.

3.2 Sử dụng Thread trong chương trình Net

Để sử dụng Thread trong NET ta sử dụng namespace System.Threading

Một số phương thức thường dùng:

Bảng 9: Các phương thức sử dụng trong ThreadPublic Method Mô tả

Abort () Kết thúc Thread

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)

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

Sleep () Static method: 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)Một số thuộc tính thường dùng:

Trang 15

Bảng 10: Các thuộc tính thường dùng trong ThreadPublic Property Mô tả

CurrentThread This static property: trả về thread hiện hành đang chạy.IsAlive Trả về giá trị cho biết trạng thái thực thi của thread hiện

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

ThreadState Lấy về trạng thái của thread (đang dừng, hay đang chạy…)Tạo một tuyến trong C#

3.3 Sử dụng Threadpool trong các chương trình Net

Bảng 11: Các phương thức sử dụng trong ThreadpoolMethod Description (Mô tả)

BindHandle () Binds an operating system handle to the

thread poolGetAvailableThreads() Gets the number of worker threads

available for use in the thread poolGetMaxThreads () Gets the maximum number of worker

Trang 16

threads available in the thread poolQueueUserWorkItem () Queues a user delegate waiting for a

WaitHandle objectUnsafeQueueUserWorkItem () Queues an unsafe user delegate to the

thread pool but does not propagate the calling stack onto the worker thread

UnsafeRegisterWaitForSingleObject() Registers an unsafe delegate waiting for a

WaitHandle object

Trang 17

CHƯƠNG 3: CHƯƠNG TRÌNH SHARE DESKTOP

1 Giới thiệu giao thức Share Desktop:

Giao thức Share Desktop là kết nối cơ bản với giao diện đồ họa được thiết kế để tạo điều kiện thuận lợi cho người sử dụng tương tác với một hệ máy tính từ xa bằng cách cập nhật những thông tin đồ họa đến từ máy tính từ xa tới người sử dụng và đồng bộ thông tin quản lý của người dùng tương tác đến máy tính ở xa, giống như đang ngồi tại chính máy đó

Giao thức này cũng cung cấp một cơ chế cho phép đơn giản hóa việc truyền thông chuyên dụng mở rộng giữa người sử dụng máy tính trực tiếp và những thành phần chạy trên máy tính ở xa

Hinh 2: Mô hình mạng của chương trình Share Desktop

Trang 18

Hinh 3: Giao thức của chương trình Share Desktop

• Một gói dữ liệu gửi từ Client có định dạng:

[Lệnh]#[Dữ liệu 1]# #[Dữ liệu N]

Lệnh chỉ là 1 trong các lệnh sau đây:

{KetNoi, YeuCauGuiFile, GuiFile, ChapNhanFile,

NhanFileThanhCong, KhongChapNhanFile, NgatKetNoi}

Trang 19

 KetNoi: lệnh yêu cầu kết nối với server (Dữ liệu: tên máy tính

client, địa chỉ máy client)

 YeuCauGuiFile: lệnh yêu cầu gửi file (Dữ liệu: tên máy client,

địa chỉ client, tên file, kích thước file)

 GuiFile: lệnh bắt đầu gửi file

 ChapNhanFile: lệnh chấp nhận file gửi từ server

 NhanFileThanhCong: lệnh thong báo nhận file thành công

 KhongChapNhanFile: lệnh không nhận file từ server

 NgatKetNoi: lệnh ngắt kết nối

• Một gói dữ liệu gửi từ Server có định dạng:

[Lệnh]#[Dữ liệu 1]# #[Dữ liệu N]

Lệnh chỉ là 1 trong các lệnh sau đây:

{KetNoiThanhCong, YeuCauGuiFile, GuiFile, ChapNhanFile,

NhanFileThanhCong, KhongChapNhanFile, ShareDesktop}

 KetNoiThanhCong: lệnh thong báo kết nối thành công (Dữ liệu:

tên máy tính server)

 YeuCauGuiFile: lệnh yêu cầu gửi file (Dữ liệu: tên file, kích

thước file)

 GuiFile: lệnh bắt đầu gửi file

 ChapNhanFile: lệnh chấp nhận file gửi từ client

 NhanFileThanhCong: lệnh thông báo nhận file thành công

 KhongChapNhanFile: lệnh không nhận file từ client

 ShareDesktop: lệnh yêu cầu share dektop

Trang 20

2 Chương trình:

2.1 Yêu cầu bài toán:

Dựa trên nên tảng giao thức Share Desktop có sẵn, tiến hành xây dựng mô hình Client-Server hỗ trợ các tính năng cơ bản tương tác với máy tính từ xa như gửi file, nhận file, share desktop,… sử dụng ngôn ngữ lập trình C#

2.2 Chương trình:

2.2.1 Server

Hinh 4: Giao diện server khi client kết nối thành công

Trang 21

Hinh 5: Giao diện server khi nhận file từ client

2.2.2 Client

Hinh 6: Giao diện Client khi kết nối thành công với Server

Trang 22

Hinh 7: Giao diện Client khi gửi file đến Server

Trang 23

KÊT LUẬN Kết quả đạt được

 Đề tài viết chương trình Share desktop đã thức hiện được những nội dung

- Tìm hiểu được cách lập trình đa luồng trong NET

- Tìm hiểu cách hoạt động của một chương trình điểu khiển máy tính từ xa đơn giản

 Ưu nhược điểm của chương trình

- Ưu điểm

 Đơn giản gọn nhẹ

- Nhược điểm

 Chưa nhìn thấy được màn hình client

 Khó sử dụng trong việc mở ứng dụng và lấy file

Hướng phát triển

Về cơ bản, nghiên cứu đã đạt được những yêu cầu đã đặt ra Tuy nhên nếu có điều kiện, đồ án sẽ cố gắng phát triển thêm các chức năng sau:

- Có thể nhìn thấy màn hình máy client, server

- Điều khiển client bằng client

Trang 24

TÀI LIỆU THAM KHẢO

Tài liệu:

[1] Dương Quang Thiện, 2005, NET toàn tập

[2] Nguyễn Ngọc Bình Phương, 2005, Các giải pháp lập trình C#

[3] Sybex, 2003, C-Sharp Network Programming

Các trang Web

[1] http://www.codeproject.com

[2] http://www.codeguru.com

Ngày đăng: 26/12/2015, 11:42

HÌNH ẢNH LIÊN QUAN

Bảng 3: Các phương thức của lớp TcpClient - Báo cáo Lập trình mạng
Bảng 3 Các phương thức của lớp TcpClient (Trang 8)
Bảng 8: Các phương thức trong Socket - Báo cáo Lập trình mạng
Bảng 8 Các phương thức trong Socket (Trang 11)
Bảng 9: Các phương thức sử dụng trong Thread - Báo cáo Lập trình mạng
Bảng 9 Các phương thức sử dụng trong Thread (Trang 14)
Bảng 10: Các thuộc tính thường dùng trong Thread - Báo cáo Lập trình mạng
Bảng 10 Các thuộc tính thường dùng trong Thread (Trang 15)

TỪ KHÓA LIÊN QUAN

w