Bài giảng Lập trình mạng (Network Programming): Chương 4 - Lương Ánh Hoàng

7 8 0
Bài giảng Lập trình mạng (Network Programming): Chương 4 - Lương Ánh Hoàng

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

Thông tin tài liệu

• Hai lớp này không thread-safe: đối tượng tạo ra ở luồng nào thì chỉ có thể được sử dụng ở luồng đó.. Mã lỗi có thể truy nhập qua hàm GetLastError()[r]

(1)(2)

• 4.1 Giới thiệu • 4.2 CSocket

• 4.3 CAsyncSocket

(3)

• MFC: Microsoft Foundation Classes

• Bộ thư viện hướng đối tượng C++ lập trình ứng dụng Window

• Cung cấp hai lớp hỗ trợ lập trình mạng

– CAsyncSocket: Đóng gói lại thư viện WinSock dạng hướng đối tượng Hoạt động chế độ bất đồng

– CSocket: Kế thừa từ CAsyncSocket cung cấp giao diện mức cao Hoạt động chế độ đồng

• Hai lớp không thread-safe: đối tượng tạo luồng nào sử dụng luồng

• Tệp tiêu đề: afxsock.h

Chương 4.1 Giới thiệu

(4)

• Khởi tạo thư viện: tự động framework qua hàm AfxSocketInit • Khởi tạo đối tượng CSocket: Phương thức Create

Chương 4.2 CSocket

BOOL Create(

UINT nSocketPort = 0, // Cổng, mặc định

int nSocketType = SOCK_STREAM, // Kiểu socket

LPCTSTR lpszSocketAddress = NULL) // Địa giao diện mạng, thí dụ // “192.168.1.1”

Giá trị trả về:

- Khác NULL thành công

- NULL thất bại Mã lỗi truy nhập qua hàm GetLastError() Thí dụ:

(5)

• Kết nối đến máy khác: Phương thức Connect

Chương 4.2 CSocket

144

BOOL Connect(

LPCTSTR lpszHostAddress, // Địa chỉ/tên miền máy đích

UINT nHostPort // Cổng

);

BOOL Connect(

const SOCKADDR* lpSockAddr, // Địa máy đích dạng SOCKADDR

int nSockAddrLen // Chiều dài cấu trúc địa

);

Giá trị trả về:

- Khác NULL thành công

- NULL thất bại Mã lỗi truy nhập qua hàm GetLastError() Thí dụ:

CSocket s; s.Create();

(6)

• Đợi kết nối từ máy khác: Phương thức Listen

Chương 4.2 CSocket

BOOL Listen(

int nConnectionBacklog =5)

Giá trị trả về:

- Khác NULL thành công

- NULL thất bại Mã lỗi truy nhập qua hàm GetLastError()

(7)

• Chấp nhận kết nối từ máy khác: Phương thức Accept

Chương 4.2 CSocket

146

virtual BOOL Accept(

CSocket& rConnectedSocket, // Socket tương ứng với kết nối

SOCKADDR* lpSockAddr = NULL,// Địa socket dạng SOCKADDR

int* lpSockAddrLen = NULL // Chiều dài địa

);

Giá trị trả về:

- Khác NULL thành công

- NULL thất bại Mã lỗi truy nhập qua hàm GetLastError() Thí dụ:

CSocket Server, Client;

// Khởi tạo socket Server …

// Chấp nhận kết nối

Server.Accept(Client);

// Gửi nhận liệu Client

Ngày đăng: 01/04/2021, 00:26

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan