Các hàm thành phần của lớp CSocket (MFC)

- nSocketPort:cổng trên host được dùngvới Socket;nếubằng 0 thìmặc định

MFCsẽtự chọn port.

- nSocketType là SOCK_STREAM (TCP) hay SOCK_DGRAM (UDP).

- lpszSocketAddress: địa chỉ IPcủa host dùng socket để truyền thông.

Vídụ: 172.29.6.240.

- Giá trị trảvề: khác 0nếu thành công, ngoài ra thìbằng 0

pdf7 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: dkS00TYs | Lượt xem: 2524 | Lượt tải: 3download
Tóm tắt nội dung Các hàm thành phần của lớp CSocket (MFC), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
Các hàm thành phần của lớp CSocket (MFC) 
Lệnh này dùng để tạo socket 
BOOL Create( 
 UINT nSocketPort = 0, 
 int nSocketType = SOCK_STREAM, 
 LPCTSTR lpszSocketAddress = NULL 
); 
- nSocketPort: cổng trên host được dùng với Socket; nếu bằng 0 thì mặc định 
MFC sẽ tự chọn port. 
- nSocketType là SOCK_STREAM (TCP) hay SOCK_DGRAM (UDP). 
- lpszSocketAddress: địa chỉ IP của host dùng socket để truyền thông. 
 Ví dụ: 172.29.6.240. 
- Giá trị trả về: khác 0 nếu thành công, ngoài ra thì bằng 0. 
Lệnh dán địa chỉ cục bộ đến socket 
BOOL Bind( 
 UINT nSocketPort, 
 LPCTSTR lpszSocketAddress = NULL 
); 
BOOL Bind ( 
 const SOCKADDR* lpSockAddr, 
 int nSockAddrLen 
); 
- nSocketPort: cổng xác định ứng dụng socket. 
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
- lpszSocketAddress: địa chỉ mạng. 
- lpSockAddr: trỏ đến cấu trúc SOCKADDR chứa địa chỉ cho socket này. 
- nSockAddrLen: chiều dài của địa chỉ lpSockAddr được tính theo byte. 
- Giá trị trả về: khác 0 nếu thành công, ngoài ta = 0. 
struct sockaddr { 
 unsigned short sa_family; 
 char sa_data[14]; 
}; 
- Đây là cấu trúc lưu trữ địa chỉ IP để máy gia nhập vào truyền thông socket 
windows. 
Hàm giải phóng socket 
Close() 
Hàm thiết lập kết nối đến server 
BOOL Connect( 
 LPCTSTR lpszHostAddress, 
 UINT nHostPort 
); 
BOOL Connect( 
 const SOCKADDR* lpSockAddr, 
 int nSockAddrLen ); 
- Gọi hàm này để thiết lập 1 kết nối đến 1 socket. 
- lpszHostAddress: địa chỉ mạng của socket mà cần được kết nối đến, có thể là 
chuỗi số phân cách bởi dấu chấm, vd: 172.29.6.240. 
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
- nHostPort: cổng xác định ứng dụng socket. 
- lpSockAddr: trỏ đến cấu trúc SOCKADDR chứa địa chỉ của socket được kết nối. 
- nSockAddrLen: chiều dài của địa chỉ trong lpSockAddr được tính theo byte. 
- Giá trị trả về: khác 0 nếu thành công, thất bại = 0. 
Hàm 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. Phạm vi là từ 1 đến 5. 
- Giá trị trả về: khác 0 = thành công, bằng 0 = thấ bại. 
Hàm chấp nhận một kết nối trên socket 
virtual BOOL Accept( 
 CAsyncSocket& rConnectedSocket, 
 SOCKADDR* lpSockAddr = NULL, 
 int* lpSockAddrLen = NULL ); 
- Socket mới cho kết nối 
- lpSockAddr trỏ đến cấu trúc SOCKADDR nhận địa chỉ mạng của socket kết nối 
(trên client). 
- 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ề. 
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
- 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. 
Hàm nhận dữ liệu từ socket (TCP) 
virtual int Receive( 
 void* lpBuf, 
 int nBufLen, 
 int nFlags = 0 
); 
- lpBuf: vùng đệm chứa dữ liệu. 
- nBuffLen: chiều dài của vùng đệm tính theo byte. 
- nFlag: cách nhận dữ liệu, sử dụng giá trị mặc định là 0. 
- Giá trị trả về là số byte nhận được, nếu socket đóng thì giá trị trả về là 0, ngoài ra 
giá trị sẽ trả về là SOCKET_ERROR. 
Hàm gửi dữ liệu đến socket (TCP) 
virtual int Send( 
 const void* lpBuf, 
 int nBufLen, 
 int nFlags = 0 
); 
- lpBuf: vùng đệm chứa dữ liệu để truyền đi. 
- nBufLen: chiều dài vùng đệm. 
- nFlag: cách truyền dữ liệu, sử dụng giá trị mặc định là 0. 
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
- Giá trị trả về là số ky tự được gửi, nếu thất bại giá trị trả về là 
SOCKET_ERROR. 
Hàm nhận dữ liệu từ Socket (UDP) 
int ReceiveFrom( 
 void* lpBuf, 
 int nBufLen, 
 CString& rSocketAddress, 
 UINT& rSocketPort, 
 int nFlags = 0 
); 
int ReceiveFrom( 
 void* lpBuf, 
 int nBufLen, 
 SOCKADDR* lpSockAddr, 
 int* lpSockAddrLen, 
 int nFlags = 0 ); 
- Hàm nhận 1 datagram và lưu địa chỉ trong rSocketAddress hay trong cấu trúc 
SOCKADDR từ 1 nguồn cụ thể. 
- lbBuf: vùng đệm chứa dữ liệu nhận được. 
- rSocketAddress: tham chiếu đến đối tượng CString nhận địa chỉ IP. 
- rSocketPort: trỏ đến 1 biến UINT chứa port. 
- lpSockAddr: trỏ đến cấu trúc chứa địa chỉ nguồn. 
- lpSockAddrLen: chứa chiều dài của địa chỉ nguồn lưu trong lpSockAddr. 
- nFlag: cụ thể cách gọi. 
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
- Giá trị trả về là số byte nhận được, = 0 nếu socket bị đóng, = SOCKET_ERROR 
nếu có lỗi. 
Hàm gửi dữ liệu đến socket (UDP) 
int SendTo( 
 const void* lpBuf, 
 int nBufLen, 
 UINT nHostPort, 
 LPCTSTR lpszHostAddress = NULL, 
 int nFlags = 0 
); 
int SendTo( 
 const void* lpBuf, 
 int nBufLen, 
 const SOCKADDR* lpSockAddr, 
 int nSockAddrLen, 
 int nFlags = 0 
); 
- lpBuf: vùng đệm chứa dữ liệu để truyền. 
- nBufferLen: chiều dài của dữ liệu trong vùng đệm tính theo byte. 
- nHostPort: port ứng dụng. 
- lpszHostAddress: địa chỉ của máy được kết nối, vd:172.29.6.240. 
- lpSockAddr: trỏ đến cấu trúc chứa địa chỉ của socket đích. 
- lpSockAddrLen: chiều dài của địa chỉ lưu trong lpSockAddr tính theo byte. 
- Trả về số k y tự được gửi, ngoài ra trả về SOCKET_ERROR khi có lỗi. 
Khoa Công nghệ Thông tin – Trường ĐH KHTN Tp. HCM 
Bộ môn Mạng Máy Tính và Viễn Thông 
Khoa CNTT – Trường ĐH KHTN -7- 
Hàm vô hiệu hoá luồng chức năng 
BOOL ShutDown( 
 int nHow = sends 
); 
- Hàm làm vô hiệu hóa send, receive hay cả hai. 
- nHow = 0: disable receive 
- nHow = 1: disable send 
- nHow = 2: disable both 
- Trả về giá trị khác 0 nếu thành công, và trả về 0 nếu lời gọi hàm thất bại. 
— Hết — 

File đính kèm:

  • pdfCác hàm thành phần của lớp CSocket (MFC).pdf