Bài giảng Mạng máy tính - Lập trình Socket - Lê Quốc Hòa

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN  
BỘ MÔN MMT & VT – KHOA CNTT  
Môn: Mạng máy tính  
LẬP TRÌNH SOCKET  
ThS. Lê Quốc Hòa  
1
Nội dung chính  
1
2
Giới thiệu Socket  
Hướng dẫn viết 1 ứng dụng S-C  
3 Một số hàm cơ bản trong CSocket  
4
Demo  
2
Giới thiệu về Socket  
Sockets cung cấp một interface để lập  
trình mạng tại tầng Transport.  
Một socket là một end-point của một liên  
kết giữa hai ứng dụng mạng.  
Nhiều NNLT: C, C++, Java, VB, C#, . . .  
Windows Socket Application Programming  
Interface (Winsock API)  
Winsock hỗ trợ xây dựng các ứng dụng  
mạng trên nền TCP/IP.  
3
Nội dung chính  
1
2
Giới thiệu Socket  
Hướng dẫn viết 1 ứng dụng S-C  
3 Một số hàm cơ bản trong CSocket  
4
Demo  
4
Xây dựng UD Client-Server với Socket  
Các bước cần thực hiện:  
1. Xác định kiến trúc mạng: Client – Server,  
Peer-to-Peer  
2. Giao thức sử dụng tầng Transport: TCP,  
UDP  
3. Các port sử dụng ở Server và Client  
4. Giao thức tầng ứng dụng khi trao đổi dữ  
liệu giữa hai end-host  
5. Lập trình  
5
Xây dựng UD Client-Server với Socket  
1/ Xác định bài tập và đồ án:  
- Kiến trúc Client – Server  
- Giao thức sử dụng tầng Transport là TCP  
2/ Ghi chú:  
- XD UD theo giao thức tầng UD được định  
nghĩa sẵn phải tuân thủ đúng quy định  
tham khảo RFC (request for comment)  
- Peer-to-Peer: 1 UD có cả Client - Server  
6
Xây dựng UD Client-Server với Socket  
SERVER  
CLIENT  
Tạo socket để lắng nghe kết nối và  
đăng ký port cho socket  
Server.Create (port)  
Lắng nghe CÁC kết nối từ client  
Tạo socket để kết nối đến server  
Server.Listen()  
Client.Create ()  
Đợi 1 kết nối  
đến từ Client  
Kết nối đến Server  
Client.Connect (IP, port)  
Chấp nhận 1 kết nối từ client  
Server.Accept(s)  
Truyền/Nhận dữ liệu với client s  
Truyền/Nhận dữ liệu với client s  
s.Send() / s.Receive()  
Client.Send() / Client.Receive()  
Đóng kết nối  
Đóng kết nối  
Server.Close()  
Client.Close()  
7
Nội dung chính  
1
2
Giới thiệu Socket  
Hướng dẫn viết 1 ứng dụng S-C  
3 Một số hàm cơ bản trong CSocket  
4
Demo  
8
Một số hàm cơ bản trong lớp CSocket  
CSocket (được hỗ trợ trong MFC) quản lý  
việc truyền nhận dữ liệu thông qua  
socket  
Tham khảo trong MSDN:  
9
Một số hàm cơ bản trong lớp CSocket  
Khởi tạo Socket  
BOOL AfxSocketInit(  
WSADATA* lpwsaData = NULL  
);  
Trước khi sử dụng các hàm của lớp CSocket,  
chúng ta phải gọi hàm này để khởi tạo Windows  
Socket với tham số lpwsaData gán bằng NULL.  
10  
Một số hàm cơ bản trong lớp CSocket  
Tạo socket  
BOOL Create(  
UINT nSocketPort = 0,  
int nSocketType = SOCK_STREAM,  
LPCTSTR lpszSocketAddress = NULL  
);  
nSocketPort: port của socket; nếu bằng 0 thì port sẽ được  
MFC chọn ngẫu nhiên.  
nSocketType là SOCK_STREAM (TCP) hay SOCK_DGRAM  
(UDP).  
lpszSocketAddress: địa chỉ IP của host dùng socket. Nếu  
dùng NULL, socket sẽ lắng nghe hoạt động của client trên  
tất cả các card mạng.  
Giá trị trả về: khác 0 nếu thành công; ngược lại thì bằng 0  
và mã lỗi cụ thể sẽ được cho khi gọi hàm GetLastError.  
11  
Một số hàm cơ bản trong lớp CSocket  
Lắng nghe các yêu cầu kết nối  
BOOL Listen(  
int nConnectionBacklog = 5  
);  
Hàm này chỉ hỗ trợ cho socket dạng  
SOCK_STREAM.  
nConnectionBacklog: chiều dài tối đa mà hàng  
đợi kết nối chưa được chấp nhận có thể tăng.  
Giá trị trả về: khác 0 thành công, bằng 0 →  
thất bại.  
12  
Một số hàm cơ bản trong lớp CSocket  
Chấp nhận một kết nối  
virtual BOOL Accept(  
CAsyncSocket& rConnectedSocket,  
SOCKADDR* lpSockAddr = NULL,  
int* lpSockAddrLen = NULL );  
rConnectedSocket: tham chiếu định danh socket của kết nối  
được chấp nhận.  
lpSockAddr trỏ đến cấu trúc SOCKADDR nhận địa chỉ IP của  
socket kết nối đến.  
Nếu lpSockAddr hay lpSockAddrLen lấy giá trị mặc định NULL  
thì sẽ không có thông tin từ socket (trên client) được chấp  
nhận được trả về.  
lpSockAddrlen chứa chiều dài thực sự của lpSockAddr khi trả  
về theo byte.  
Giá trị trả về: khác 0 nếu thành công và bằng 0 nếu thất bại.  
13  
Một số hàm cơ bản trong lớp CSocket  
Kết nối đến server  
BOOL Connect(  
LPCTSTR lpszHostAddress,  
UINT nHostPort  
);  
lpszHostAddress: địa chỉ IP của Server.  
nHostPort: Port của socket lắng nghe kết nối trên  
Server.  
Giá trị trả về: khác 0 nếu thành công; ngược lại,  
thất bại = 0.  
14  
Một số hàm cơ bản trong lớp CSocket  
Truyền/nhận dữ liệu  
virtual int Send/Receive(  
const void* lpBuf,  
int nBufLen,  
int nFlags = 0  
);  
lpBuf: vùng đệm chứa dữ liệu.  
nBuffLen: kích thước của vùng đệm tính theo byte.  
nFlag: cách nhận/truyền dữ liệu, sử dụng giá trị mặc  
định là 0.  
Giá trị trả về là số byte nhận/truyền được  
15  
Thí dụ minh họa  
Bài toán 1: viết một ứng dụng chat tuần tự giữa  
Server Client (Server chat trước).  
Xác định 4 bước trước khi lập trình:  
1. Xác định kiến trúc mạng: ?  
2. Giao thức sử dụng tầng Transport: ?  
3. Các port sử dụng ở Server và Client: Server - ?  
4. Giao thức tầng ứng dụng khi trao đổi dữ liệu  
giữa hai end-host:  
+ server client server client …  
+ format thông điệp truyền giữa client và  
server: <Chiều dài thông điệp><Thông Điệp>  
16  
Thí dụ minh họa  
Xét kịch bản trong bài toán 1  
CLIENT  
SERVER  
Mô hình: 1 server 1 client  
17  
Thí dụ minh họa  
Bài toán 2: N clients sẽ gửi cho server 2 số từ 0  
10. Các client luân phiên nhau gửi theo 2  
lượt. Server đếm số lượng các số Nguyên tố  
được gửi lên và thông báo kết quả cho tất cả  
client.  
Xác định 4 bước trước khi lập trình: ?  
Giao thức tầng ứng dụng khi trao đổi dữ liệu  
giữa hai end-host:  
+ N clients server N clients …  
+ format thông điệp truyền giữa client và  
server: <Kích thước số nguyên><Số nguyên>  
18  
Thí dụ minh họa  
Xét kịch bản trong bài toán 2  
CLIENT 2  
CLIENT 1  
SERVER  
CLIENT 3  
Mô hình: 1 server N clients  
19  
Nội dung chính  
1
2
Giới thiệu Socket  
Hướng dẫn viết 1 ứng dụng S-C  
3 Một số hàm cơ bản trong CSocket  
4
Demo  
20  
Tải về để xem bản đầy đủ
ppt 25 trang myanh 15860
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Lập trình Socket - Lê Quốc Hòa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptbai_giang_mang_may_tinh_lap_trinh_socket_le_quoc_hoa.ppt