lifemelody_hz

New Member
Link tải luận văn miễn phí cho ae Kết Nối
MỤC LỤC

CHƯƠNG I: NHỮNG KIẾN THỨC CƠ BẢN VỀ LẬP TRÌNH MẠNG 6
I.1. TỔNG QUAN 6
I.1.1. Tầng Ethernet 6
I.1.2. Địa chỉ Ethernet 7
I.1.3. Ethernet Protocol Type 9
I.1.4. Data payload 9
I.1.5. Checksum 10
I.2. TẦNG IP 10
I.2.1. Trường địa chỉ 11
I.2.2. Các cờ phân đoạn 11
I.2.3. Trường Type of Service 12
I.2.4. Trường Protocol 12
I.3. TẦNG TCP 13
I.3.1. TCP port 14
I.3.2. Cơ chế đảm bảo độ tin cậy truyền tải các gói tin 16
I.3.3. Quá trình thành lập một phiên làm việc TCP 17
I.4. TẦNG UDP 18
CHƯƠNG II: LẬP TRÌNH SOCKET HƯỚNG KẾT NỐI 21
II.1. SOCKET 21
II.2. IPADDRESS 24
II.3. IPENDPOINT 25
II.4. LẬP TRÌNH SOCKET HƯỚNG KẾT NỐI 25
II.4.1. Lập trình phía Server 26
II.4.2. Lập trình phía Client 30
II.4.3. Vấn đề với bộ đệm dữ liệu 32
II.4.4. Xử lý với các bộ đệm có kích thước nhỏ 33
II.4.5. Vấn đề với các thông điệp TCP 35
II.4.6. Giải quyết các vấn đề với thông điệp TCP 39
II.4.6.1. Sử dụng các thông điệp với kích thước cố định 39
II.4.6.2. Gởi kèm kích thước thông điệp cùng với thông điệp 44
II.4.6.3. Sử dụng các hệ thống đánh dấu để phân biệt các thông điệp 50
II.4.7. Sử dụng C# Stream với TCP 50
II.4.7.1. Lớp NetworkStream 50
II.4.7.2. Lớp StreamReader và StreamWriter 54
CHƯƠNG III: LẬP TRÌNH SOCKET PHI KẾT NỐI 59
III.1. TỔNG QUAN 59
III.2. LẬP TRÌNH PHÍA SERVER 60
III.3. LẬP TRÌNH PHÍA CLIENT 62
III.3.1. Sử dụng cách Connect() trong chương trình UDP Client 64
III.3.2. Phân biệt các thông điệp UDP 65
III.4. NGĂN CẢN MẤT DỮ LIỆU 67
III.5. NGĂN CẢN MẤT GÓI TIN 70
III.5.1. Sử dụng Soket Time-out 71
III.6. ĐIỀU KHIỂN VIỆC TRUYỀN LẠI CÁC GÓI TIN 73
CHƯƠNG V: SỬ DỤNG CÁC LỚP HELPER CỦA C# SOCKET 79
IV.1. LỚP TCP CLIENT 79
IV.2. LỚP TCPLISTENER 82
IV.3. LỚP UDPCLIENT 85
CHƯƠNG V: ĐA NHIỆM TIỂU TRÌNH 89
V.1. KHÁI NIỆM TIẾN TRÌNH VÀ TIỂU TRÌNH CỦA WINDOWS 89
V.2. MÔ HÌNH 89
V.3. CÁC KỸ THUẬT TRONG .NET TẠO TIỂU TRÌNH 90
V.3.1. Tạo tiểu trình trong Thread-pool 90
V.3.2. Tạo tiểu trình bất đồng bộ 93
V.3.2.1. cách BlockingExample 96
V.3.2.2. cách PollingExample 97
V.3.2.3. cách WaitingExample 98
V.3.2.4. cách WaitAllExample 99
V.3.2.5. cách CallbackExample 100
V.3.3. Thực thi cách bằng Timer 102
V.3.4. Thực thi cách bằng tiểu trình mới 104
V.3.5. Điều khiển quá trình thực thi của một tiểu trình 106
V.3.6. Nhận biết khi nào một tiểu trình kết thúc 110
V.3.7. Khởi chạy một tiến trình mới 112
V.3.8. Kết thúc một tiến trình 114
V.4. THỰC THI PHƯƠNG THỨC BẰNG CÁCH RA HIỆU ĐỐI TƯỢNG WAITHANDLE 115
CHƯƠNG V: ĐỒNG BỘ HÓA 117
VI.1. LÝ DO ĐỒNG BỘ HÓA 117
VI.2. CÁC PHƯƠNG PHÁP ĐỒNG BỘ HÓA 117
VI.3. PHƯƠNG PHÁP SEMAPHORE 117
VI.4. PHƯƠNG PHÁP DÙNG LỚP MONITOR 119
VI.5. SYSTEM.THREADING.WAITHANDLE, BAO GỒM AUTORESETEVENT, MANUALRESETEVENT 121
VI.6. PHƯƠNG PHÁP MUTEX 124
CHƯƠNG V: LẬP TRÌNH SOCKET BẤT ĐỒNG BỘ 126
VII.1. LẬP TRÌNH SỰ KIỆN TRONG WINDOWS 126
VII.1.1. Sử dụng Event và Delegate 127
VII.1.2. Lớp AsyncCallback trong lập trình Windows 129
VII.2. SỬ DỤNG SOCKET BẤT ĐỒNG BỘ 129
VII.2.1. Thành lập kết nối 130
VII.2.1.1. cách BeginAccept() và EndAccept() 130
VII.2.1.2. cách BeginConnect() và EndConnect() 132
VII.2.2. Gởi dữ liệu 133
VII.2.2.1. cách BeginSend() và cách EndSend() 133
VII.2.2.2. cách BeginSendTo() và EndSendTo() 134
VII.2.3. Nhận dữ liệu 135
VII.2.3.1. cách BeginReceive(), EndReceive, BeginReceiveFrom(), EndReceiveFrom() 135
VII.2.4. Chương trình WinForm gởi và nhận dữ liệu giữa Client và Server 135
VII.2.4.1. Chương trình Server 135
VII.2.4.2. Mô hình chương trình Server 135
VII.2.4.3. Lớp ServerProgram 136
VII.2.4.4. Lớp ServerForm 139
VII.2.5. Chương trình Client 140
VII.2.5.1. Mô hình chương trình Client 141
VII.2.5.2. Lớp ClientProgram 142
VII.2.5.3. Lớp ClientForm 145
VII.3. LẬP TRÌNH SOCKET BẤT ĐỒNG BỘ SỬ DỤNG TIỂU TRÌNH 146
VII.3.1. Lập trình sử dụng hàng đợi gởi và hàng đợi nhận thông điệp 146
VII.3.2. Lập trình ứng dụng nhiều Client 152
TÀI LIỆU THAM KHẢO 155

CHƯƠNG I: NHỮNG KIẾN THỨC CƠ BẢN VỀ LẬP TRÌNH MẠNG
I.1. Tổng quan
Internet Protocol (IP) là nền tảng của lập trình mạng. IP là phương tiện truyền tải dữ liệu giữa các hệ thống bất kể đó là hệ thống mạng cục bộ (LAN) hay hệ thống mạng diện rộng (WAN). Mặc dù lập trình viên mạng có thể chọn các giao thức khác để lập trình nhưng IP cung cấp các kỹ thuật phát triển nhất để gởi dữ liệu giữa các thiết bị, đặc biệt là thông qua mạng Internet.
Để hiểu rõ các khái niệm bên dưới lập trình mạng, chúng ta phải hiểu rõ giao thức IP, hiểu cách nó chuyển dữ liệu giữa các thiết bị mạng. Lập trình mạng dùng giao thức IP thường rất phức tạp. Có nhiều yếu tố cần quan tâm liên quan đến cách dữ liệu được gởi qua mạng: số lượng Client và Server, kiểu mạng, tắc nghẽn mạng, lỗi mạng,… Bởi vì các yếu tố này ảnh hưởng đến việc truyền dữ liệu từ thiết bị này đến thiết bị khác trên mạng do đó việc hiểu rõ chúng là vấn đề rất quan trọng để lập trình mạng được thành công.
Một gói dữ liệu mạng gồm nhiều tầng thông tin. Mỗi tầng thông tin chứa một dãy các byte được sắp đặt theo một trật tự đã được định sẵn. Hầu hết các gói dữ liệu dùng trong lập trình mạng đều chứa ba tầng thông tin cùng với dữ liệu được dùng để truyền tải giữa các thiết bị mạng. Hình sau mô tả hệ thống thứ bậc của một gói IP:

Hình I.1: Các tầng giao thức mạng trong các gói dữ liệu
I.1.1. Tầng Ethernet
Tầng đầu tiên của gói dữ liệu mạng được gọi là Ethernet Header, trong tầng này có ba gói giao thức Ethernet: Ethernet 802.2, Ethernet 802.3, và Ethernet phiên bản 2. Các giao thức Ethernet 802.2 và Ethernet 802.3 là các giao thức chuẩn của IEEE. Ethernet phiên bản 2 tuy không phải là giao thức chuẩn nhưng nó được sử dụng rộng rãi trong mạng Ethernet. Hầu hết các thiết bị mạng kể cả hệ điều hành Windows mặc định dùng giao thức Ethernet phiên bản 2 để truyền tải các gói IP.

Hình I.2: Ethernet Header
Phần đầu của Ethernet phiên bản 2 là địa chỉ MAC (Media Access Card) dùng để xác định các thiết bị trên mạng cùng với số giao thức Ethernet xác định giao thức tầng tiếp theo chứa trong gói Ethernet. Mỗi gói Ethernet bao gồm:
• 6 byte địa chỉ MAC đích
• 6 byte địa chỉ MAC nguồn
• 2 byte xác định giao thức tầng kế tiếp
• Data payload từ 46 đến 1500 byte
• 4-byte checksum
I.1.2. Địa chỉ Ethernet
Địa chỉ Ethernet (địa chỉ MAC) là địa chỉ của các thiết bị, địa chỉ này được gán bởi các nhà sản xuất thiết bị mạng và nó không thay đổi được. Mỗi thiết bị trên mạng Ethernet phải có 1 địa chỉ MAC duy nhất. Địa chỉ MAC gồm 2 phần:
• 3 byte xác định nhà sản xuất
• 3 byte xác định số serial duy nhất của nhà sản xuất
Giản đồ địa chỉ Ethernet cho phép các địa chỉ broadcast và multicast. Đối với địa chỉ broadcast thì tất cả các bit của địa chỉ đích được gán bằng 1 (FFFFFFFFFFFF). Mỗi thiết bị mạng sẽ chấp nhận các gói có địa chỉ broadcast. Địa chỉ này hữu ích cho các giao thức phải gởi các gói truy vấn đến tất cả các thiết bị mạng. Địa chỉ multicast cũng là một loại địa chỉ đặc biệt của địa chỉ Ethernet, các địa chỉ multicast chỉ cho phép một số các thiết bị chấp nhận gói tin. Một số địa chỉ Ethernet multicast:
Địa Chỉ Mô Tả
01-80-C2-00-00-00 Spanning tree (for bridges)
09-00-09-00-00-01 HP Probe
09-00-09-00-00-01 HP Probe
09-00-09-00-00-04 HP DTC
09-00-2B-00-00-00 DEC MUMPS
09-00-2B-00-00-01 DEC DSM/DTP
09-00-2B-00-00-02 DEC VAXELN
09-00-2B-00-00-03 DEC Lanbridge Traffic Monitor (LTM)
09-00-2B-00-00-04 DEC MAP End System Hello
09-00-2B-00-00-05 DEC MAP Intermediate System Hello
09-00-2B-00-00-06 DEC CSMA/CD Encryption
09-00-2B-00-00-07 DEC NetBios Emulator
09-00-2B-00-00-0F DEC Local Area Transport (LAT)
09-00-2B-00-00-1x DEC Experimental
09-00-2B-01-00-00 DEC LanBridge Copy packets (all bridges)
09-00-2B-02-00-00 DEC DNA Lev. 2 Routing Layer Routers
09-00-2B-02-01-00 DEC DNA Naming Service Advertisement
09-00-2B-02-01-01 DEC DNA Naming Service Solicitation
09-00-2B-02-01-02 DEC DNA Time Service
09-00-2B-03-xx-xx DEC default filtering by bridges
09-00-2B-04-00-00 DEC Local Area System Transport (LAST)
09-00-2B-23-00-00 DEC Argonaut Console
09-00-4E-00-00-02 Novell IPX
09-00-77-00-00-01 Retix spanning tree bridges
09-00-7C-02-00-05 Vitalink diagnostics
09-00-7C-05-00-01 Vitalink gateway
0D-1E-15-BA-DD-06 HP
CF-00-00-00-00-00 Ethernet Configuration Test protocol (Loopback)
I.1.3. Ethernet Protocol Type
Một phần khác rất quan trọng của Ethernet Header là trường Protocol Type, trường này có kích thước hai byte. Sự khác nhau giữa gói tin Ethernet phiên bản 2 và Ethernet 802.2 và 802.3 xảy ra ở trường này. Các gói tin Ethernet 802.2 và 802.3 sử dụng trường này để cho biết kích thước của một gói tin Ethernet. Ethernet phiên bản 2 dùng trường này để định nghĩa giao thức tầng kế tiếp trong gói tin Ethernet. Một số giá trị của trường này:
Giá Trị Giao Thức
0800 IP
0806 ARP
0BAD Banyan VINES
8005 HP Probe
8035 Reverse ARP
809B AppleTalk
80D5 IBM SNA
8137 Novell
8138 Novell
814C Raw SNMP
86DD IPv6
876B TCP/IP compression
I.1.4. Data payload
Trong thẻ General, chọn card mạng cho phép các kết nối SMTP tới và số lượng các kết nối SMTP đồng thời được phép. Chúng ta cũng có thể bật/tắt việc ghi log cho dịch vụ SMTP.
Trong thẻ Delivery, cấu hình số lần cố gắng gởi thư. Nút Advanced là các thiết lập thông minh cho mail server. Cấu hình này quan trọng nếu mail server của ISP là một server chuyển tếp đến mail server ở xa. Để làm điều này, chúng ta phải, nhập địa chỉ mail server của ISP và dịch vụ SMTP sẽ chuyển tiếp tất cả các thư ra ngoài thông qua server này.

Default SMTP Virtual Properties
VIII.2.3. Lớp SmtpMail
Lớp SmtpMail nằm trong namespace System.Web.Mail cho phép gởi thư theo giao thức SMTP trong chương trình C#.
VIII.2.4. Các cách và thuộc tính của lớp SmtpMail
Lớp SmtpMail cung cấp giao tiếp .NET cho thư viện mail CDOSYS trên hệ thống Windows 200 và Windows XP. Nó không dùng cách tạo lập để tạo 1 thể hiện của lớp. Thay vì vậy, ta phải dùng các cách và thuộc tính static để truyền thông tin cho thư viện CDOSYS.
cách Send() của lớp SmtpMail là hay được dùng nhất, cách Send() được quá tải hàm và nó có 2 định dạng như sau:
Send(MailMessage message)
Send(string from, string to, string subject, string body)
Định dạng đầu tiên cho phép gởi một đối tượng MailMessage. Lớp MailMessage chứa một thông điệp email, thông điệp này được tạo ra bằng cách gán giá trị cho các thuộc tính của lớp với thông tin liên quan đến thông điệp và các địa chỉ đích.
Định dạng thứ 2 sẽ cho phép chúng ta gởi một thông điệp dạng raw, chúng ta phải chỉ ra các trường header của thông điệp email:
From: người gởi thông điệp
To: các địa chỉ nhận thông điệp, ngăn cách bởi dấu phẩy
Subject: tiêu đề thư
Đối số cuối cùng của cách Send() là phần thân của thư. Phần này có thể là text hay HTML.
Thuộc tính duy nhất của lớp SmtpMail là SmtpServer. Nó là một thuộc tính static và nó chỉ ra địa chỉ của server chuyển tiếp thư được dùng để chuyển tiếp các thông điệp mail ra ngoài. Mặc định, thuộc tính SmtpSerrver được thiết lập cho dịch vụ SMTP của IIS nếu IIS được cài. Nếu IIS không được cài, thuộc tính SmtpServer được thiết lập giá trị null và sẽ phát sinh ra lỗi khi gởi thông điệp đi.
Nếu chúng ta sử dụng một mail server chuyển tiếp, chúng ta phải thiết lập giá trị cho thuộc tính SmtpServer trước khi gởi thông điệp.
SmtpMail.SmtpServer = "mailsrvr.myisp.net";
Khi tât cả các giá trị đã được thiết lập, tất cả các thư gởi đi sẽ được chuyển tiếp qua mail server này. Tất nhiên, chúng ta phải đảm bảo rằng server này cho phép chúng ta chuyển tiếp mail qua nó.
VIII.2.4.1. Sử dụng lớp SmtpMail
Chương trình MailTest sau đây sẽ minh họa cách tạo một email đơn giản và gởi nó thông qua một mail rely đến người nhận:


Link Download bản DOC
Do Drive thay đổi chính sách, nên một số link cũ yêu cầu duyệt download. các bạn chỉ cần làm theo hướng dẫn.
Password giải nén nếu cần: ket-noi.com | Bấm trực tiếp vào Link để tải:

 
Tags: 0900770000.
Last edited by a moderator:

Các chủ đề có liên quan khác

Top