Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
496 KB
Nội dung
HỌC PHẦN
LẬP TRÌNH MẠNG NÂNG CAO
Nguyễn Vũ – IT Faculty, Viet Han Friendship
1
Lập trình mạng nâng cao
Thời lượng: 60 tiết (8 tiết / 1 tuần)
Hình thức kiểm tra đánh giá:
Điểm rèn luyện: điểm danh + kiểm tra + Bài tập
Báo cáo đồ án
Nguyễn Vũ – IT Faculty, Viet Han Friendship
2
Mục tiêu của môn học
Nắm được cách thức trao đổi thông điệp giữa các máy tính trong mạng
Hiểu được cách thức lập trình trên tầng ứng dụng sử dụng ngôn ngữ C#
Vận dụng các kiến thức về mạng máy tính để viết chương trình trao đổi
thông điệp trên tầng mạng và tầng ứng dụng
Nguyễn Vũ – IT Faculty, Viet Han Friendship
3
Tài liệu tham khảo
[1] Unix Network Programming, W. Richard
[2] Network Programming in .NET, Fiach Rei
[3] Sybex Csharp network programming, Richard Blum
Nguyễn Vũ – IT Faculty, Viet Han Friendship
4
Nội dung
Socket không đồng bộ (Asynchronous Socket)
Sử dụng đa luồng (Thread) trong ứng dụng mạng
Kỹ thuật IP Multicasting
Giao thức ICMP
Giao thức SMTP, POP3
Giao thức HTTP
Giao thức FTP
Nguyễn Vũ – IT Faculty, Viet Han Friendship
5
Các kiến thức cũ
Lập trình socket với giao thức TCP
Sử dụng kỹ thuâât lââp trình thông thường
Sử dụng luồng nhập xuất(networkStream)
Sử dụng luồng nhập xuất hướng ký tự StreamReader, StreamWriter
Lập trình socket với giao thức UDP
Lập trình với các lớp hỗ trợ được xây dựng từ lớp Socket
TCPCLient, TCPListener
UDP Client
Nguyễn Vũ – IT Faculty, Viet Han Friendship
6
Sử dụng luồng nhâ âp xuất (networkstream)
Xây dựng chương trình Server gồm các thao tác:
Khai báo IPEndPoint
Khai báo socket
Gắn socket với số hiêâu cổng (bind)
Lắng nghe kết nối (server)
Chấp nhâân kết nối
Tạo đối tượng NetworkStream bằng lêânh:
NetworkStream ns= new NetworkStream();
Gửi nhâân dữ liêâu thông qua NetworkStream bằng
lêânh:
Nhâân dữ liêâu: int receive=ns.Read(data,0,data.Length);
Gửi dữ liêâu: ns.Write(data,0, data.Length);
Nguyễn Vũ – IT Faculty, Viet Han Friendship
7
Sử dụng luồng nhâ âp xuất (networkstream)
Xây dựng chương trình Client gồm các thao tác:
Khai báo IPEndPoint
Khai báo socket
Kết nối đến Server
Tạo đối tượng NetworkStream bằng lêânh:
NetworkStream ns= new NetworkStream();
Gửi nhâân dữ liêâu thông qua NetworkStream bằng
lêânh:
Nhâân dữ liêâu: int receive=ns.Read(data,0,data.Length);
Gửi dữ liêâu: ns.Write(data,0, data.Length);
Nguyễn Vũ – IT Faculty, Viet Han Friendship
8
Sử dụng luồng nhâ âp xuất hướng ký tư
Thông qua NetworkStream ta có thể nối thêm các luồng nhập
xuất theo hướng ký tự như: StreamReader và StreamWriter.
Không cần phải mã hóa và giải mã dữ liệu khi gửi và nhận.
Các thao tác tương tự như trên, chỉ khác ở chỗ nối thêm luồng
nhập xuất StreamReader và StreamWriter như sau:
NetworkStream ns = new NetworkStream(server);
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
Tiến hành gửi và nhận dữ liệu (không sử dụng mãng byte):
Gửi dữ liêâu: sw.WriteLine(input);
sw.Flush();
Nhâân dữ liêâu: string kq=sr.ReadLine();
Nguyễn Vũ – IT Faculty, Viet Han Friendship
9
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (1)
Để lập trình với giao thức TCP, MS.Net cung cấp hai lớp có tên
là TCPCLient và TCPListener.
Lớp TCPClient
Mội số phương thức khởi tạo:
TcpClient(): Tạo một đối tượng TcpClient
TcpClient(IPEndPoint): Tạo một đối tượng TcpClient và gắn
với một IPEndPoint cục bộ
…
Một số thuộc tính:
Connected: Trả về trạng thái đã kết nối đến Server hay chưa?
Một số phương thức:
Nguyễn Vũ – IT Faculty, Viet Han Friendship
10
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (2)
Lớp TCPClient
Một số phương thức:
Close(): Giải phóng đối tượng TcpClient nhưng ko đóng
kết nối.
Connect(RemoteHost, Port): Kết nối đến một Server có
tên và số hiệu cổng.
GetStream(): Trả về NetworkStream để gửi nhận dữ liệu
qua NetworkStream (thường dùng kết hợp với
StreamReader và StreamWriter).
Nguyễn Vũ – IT Faculty, Viet Han Friendship
11
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (3)
Ví dụ tạo chương trình Client với lớp TCPClient
Tạo đối tượng TcpClient
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),2012);
TcpClient client = new TcpClient();
Kết nối đến Server:
client.Connect(iep);
Gắn với StreamReader và StreamWriter để gửi và nhận dữ liệu:
StreamReader sr =newStreamReader(client.GetStream());
StreamWriter sw = new StreamWriter(client.GetStream());
Gửi dữ liệu:
sw.WriteLine(input);
sw.Flush();
Nhận dữ liệu:
String kq = sr.ReadLine();
Nguyễn Vũ – IT Faculty, Viet Han Friendship
12
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (4)
Lớp 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 như: SMTP Server, FTP Server, DNS Server,…
Ứng dụng Server khác ứng dụng Client ở chỗ nó luôn lắng nghe
và chấp nhâân kết nối đến từ Client.
Nguyễn Vũ – IT Faculty, Viet Han Friendship
13
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (5)
Lớp TCPListener
Môât số phương thức khởi tạo:
TcpListener(Port: Int32): Tạo và lắng nghe kết nối ở cổng
chỉ định.
TcpListener(IPEndPoint): Tạo TcpListener với môât
IPEndPoint.
TcpListener(IPAddress, Int32): Tạo môât TcpListener và
lắng nghe kết nối đến tại địa chỉ IP và cổng chỉ định.
Nguyễn Vũ – IT Faculty, Viet Han Friendship
14
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (5)
Lớp TCPListener
Môât số phương thức khác:
AcceptSocket(): Chấp nhâân môât kết nối đang chờ.
AcceptTcpClient(): Chấp nhâân môât kết nối đang chờ.
Pending(): Nếu trả về giá trị “true” khi có kết nối nào
đang chờ.
Start(): Bắt đầu lắng nghe yêu cầu kết nối.
Stop(): Dừng viêâc lắng nghe kết nối.
Nguyễn Vũ – IT Faculty, Viet Han Friendship
15
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (6)
Ví dụ tạo chương trình Server với lớp TCPServer
Tạo đối tượng TcpListener và gắn với một IPEndPoint:
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),2012);
TcpListener server = new TcpListener(iep);
Bắt đầu lắng nghe kết nối:
server.Start();
Chấp nhận kết nối từ Client:
TcpClient client=server.AccepTcpClient();
Gắn kết với StreamReader và StreamWriter để gửi và nhận dữ liệu
StreamReader sr =newStreamReader(client.GetStream());
StreamWriter sw = new StreamWriter(client.GetStream());
Gửi dữ liệu:
sw.WriteLine(input);
sw.Flush();
Nhận dữ liệu:
String kq = sr.ReadLine();
Nguyễn Vũ – IT Faculty, Viet Han Friendship
16
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (7)
Lớp UDPClient
Dùng giao thức UDP để tạo các ứng dụng không cần phải thiết
lââp kết nối giữa hai bên khi tiến hành trao đổi thông tin.
Môât số phương thức khởi tạo:
UdpClient(): tạo môât đối tượng từ UDPClient
UdpClient(Int32): Tạo môât đối tượng UdpClient và gắn
kết với môât cổng.
UdpClient(IPEndPoint): Tạo môât đối tượng UdpClient và
gắn kết với môât IPEndPoint (gồm địa chỉ IP và môât
cổng).
…
Nguyễn Vũ – IT Faculty, Viet Han Friendship
17
Sử dụng các lớp hỗ trợ được xây dưng
từ Socket (8)
Lớp UDPClient
Môât số phương thức:
BeginReceive(): Nhâân dữ liêâu không đồng bôâ từ máy ở
xa.
BeginSend(): Gửi dữ liêâu không đồng bôâ 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 gửi dữ liêâu không đồng bôâ ở trên.
Receive(): Nhâân dữ liêâu đồng bôâ do máy ở xa gửi tới.
Send(): Gửi dữ liêâu đồng bôâ cho máy ở xa.
Nguyễn Vũ – IT Faculty, Viet Han Friendship
18
[...]... liệu qua NetworkStream (thường dùng kết hợp với StreamReader và StreamWriter) Nguyễn Vũ – IT Faculty, Viet Han Friendship 11 Sử dụng các lớp hỗ trợ được xây dưng từ Socket (3) Ví dụ tạo chương trình Client với lớp TCPClient Tạo đối tượng TcpClient IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),2012); TcpClient client = new TcpClient(); Kết nối đến Server: client.Connect(iep);... Bắt đầu lắng nghe yêu cầu kết nối Stop(): Dừng viêâc lắng nghe kết nối Nguyễn Vũ – IT Faculty, Viet Han Friendship 15 Sử dụng các lớp hỗ trợ được xây dưng từ Socket (6) Ví dụ tạo chương trình Server với lớp TCPServer Tạo đối tượng TcpListener và gắn với một IPEndPoint: IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),2012); TcpListener server = new TcpListener(iep); Bắt ... Richard Blum Nguyễn Vũ – IT Faculty, Viet Han Friendship Nội dung Socket không đồng (Asynchronous Socket) Sử dụng đa luồng (Thread) ứng dụng mạng Kỹ thuật IP Multicasting Giao thức ICMP ... bằng lêânh: Nhâân dữ liêâu: int receive=ns.Read(data ,0, data.Length); Gửi dữ liêâu: ns.Write(data ,0, data.Length); Nguyễn Vũ – IT Faculty, Viet Han Friendship Sử dụng luồng nhâ âp xuất... bằng lêânh: Nhâân dữ liêâu: int receive=ns.Read(data ,0, data.Length); Gửi dữ liêâu: ns.Write(data ,0, data.Length); Nguyễn Vũ – IT Faculty, Viet Han Friendship Sử dụng luồng nhâ âp xuất