Microsoft cung cấp nhiều API để lập trình cả ứng dụng máy khách và máy chủ. Nhiều ứng dụng mới đang được viết cho Internet và khi công nghệ, khả năng của trình duyệt và các tùy chọn bảo mật thay đổi, các loại ứng dụng mới sẽ được viết. Ứng dụng tùy chỉnh của bạn có thể truy xuất thông tin và cung cấp dữ liệu trên Internet.
Dưới đây là danh sách các phương thức trong lớp CSocket.
Sơ Không. | Tên & Mô tả |
1 | Gắn Gắn một tay cầm SOCKET vào một đối tượng CSocket. |
2 | HủyChặnCuộc gọi Hủy cuộc gọi chặn hiện đang diễn ra. |
3 | Tạo ra Tạo một ổ cắm. |
4 | FromHandle Trả về một con trỏ tới một đối tượng CSocket, được cung cấp một tay cầm SOCKET. |
5 | Đang chặn Xác định xem cuộc gọi chặn có đang diễn ra hay không. |
Chúng ta hãy xem xét một ví dụ đơn giản bằng cách tạo một ứng dụng MFS SDI.
Bước 1 – Nhập MFCServer vào trường tên và nhấp vào OK.
Bước 2 – Trên tab Tính năng nâng cao, hãy kiểm tra tùy chọn ổ cắm Windows.
Bước 3 – Sau khi dự án được tạo, hãy thêm CServerSocket lớp MFC mới.
Bước 4 – Chọn CSocket làm lớp cơ sở và nhấp vào Kết thúc.
Bước 5 – Thêm nhiều CReceivingSocket lớp MFC hơn.
Bước 6 – CRecevingSocket sẽ nhận tin nhắn đến từ máy khách.
Trong CMFCServerApp, tệp tiêu đề bao gồm các tệp sau –
#include "ServerSocket.h"
#include "MFCServerView.h"
Bước 7 – Thêm hai biến lớp sau vào lớp CMFCServerApp.
CServerSocket m_serverSocket;
CMFCServerView m_pServerView;
Bước 8 – Trong phương thức CMFCServerApp::InitInstance(), tạo socket và chỉ định cổng, sau đó gọi phương thức Listen như hình bên dưới.
m_serverSocket.Create(6666);
m_serverSocket.Listen();
Bước 9 – Bao gồm tệp tiêu đề sau trong tệp tiêu đề CMFCServerView.
#include "MFCServerDoc.h"
Bước 10 – Ghi đè hàm OnAccept từ lớp Socket.
Bước 11 – Chọn CServerSocket trong chế độ xem lớp và biểu tượng được đánh dấu trong cửa sổ Thuộc tính. Bây giờ, thêm OnAccept. Đây là cách triển khai chức năng OnAccept.
void CServerSocket::OnAccept(int nErrorCode) {
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox(L"Connection accepted");
CSocket::OnAccept(nErrorCode);
}
Bước 12 – Thêm chức năng OnReceive().
void CServerSocket::OnReceive(int nErrorCode) {
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox(L"Data Received");
CSocket::OnReceive(nErrorCode);
}
Bước 13 – Thêm hàm OnReceive() trong lớp CReceivingSocket.
Nhấp chuột phải vào lớp CMFCServerView trong trình khám phá giải pháp và chọn Thêm → AddFunction.
Bước 14 – Nhập thông tin được đề cập ở trên và nhấp vào kết thúc.
Bước 15 – Thêm biến CStringArray sau vào tệp tiêu đề CMFCServerView.
CStringArray m_msgArray;
Bước 16 – Đây là cách triển khai hàm AddMsg().
void CMFCServerView::AddMsg(CString message) {
m_msgArray.Add(message);
Invalidate();
}
Bước 17 – Cập nhật hàm tạo như trong đoạn mã sau.
CMFCServerView::CMFCServerView() {
((CMFCServerApp*)AfxGetApp()) -> m_pServerView = this;
}
Bước 18 – Đây là cách triển khai hàm OnDraw(), hiển thị thông báo.
void CMFCServerView::OnDraw(CDC* pDC) {
int y = 100;
for (int i = 0; m_msgArray.GetSize(); i++) {
pDC->TextOut(100, y, m_msgArray.GetAt(i));
y += 50;
}
CMFCServerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
}
Bước 19 – Phía máy chủ hiện đã hoàn tất. Nó sẽ nhận được tin nhắn từ khách hàng.
Tạo ứng dụng phía máy khách
Bước 1 – Hãy để chúng tôi tạo một ứng dụng dựa trên hộp thoại MFC mới cho ứng dụng phía máy khách.
Bước 2 – Trên tab Tính năng nâng cao, hãy kiểm tra tùy chọn ổ cắm Windows như được hiển thị ở trên.
Bước 3 – Sau khi dự án được tạo, hãy thiết kế hộp thoại của bạn như trong ảnh chụp nhanh sau đây.
Bước 4 – Thêm trình xử lý sự kiện cho các nút Kết nối và Gửi.
Bước 5 – Thêm các biến giá trị cho cả ba điều khiển chỉnh sửa. Để kiểm soát chỉnh sửa cổng, hãy chọn loại biến UINT.
Bước 6 – Thêm lớp MFC để kết nối và gửi tin nhắn.
Bước 7 – Bao gồm tệp tiêu đề của lớp CClientSocket trong tệp tiêu đề lớp CMFCClientDemoApp và thêm biến lớp. Tương tự, hãy thêm biến lớp trong tệp tiêu đề CMFCClientDemoDlg.
CClientSocket m_clientSocket;
Bước 8 – Đây là triển khai trình xử lý sự kiện nút Kết nối.
void CMFCClientDemoDlg::OnBnClickedButtonConnect() {
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_clientSocket.Create();
if (m_clientSocket.Connect(m_ipAddress, m_port)) {
AfxMessageBox(L"Connection Successfull");
}else {
AfxMessageBox(L"Connection Failed");
}
DWORD error = GetLastError();
}
Bước 9 – Đây là triển khai trình xử lý sự kiện nút Gửi.
void CMFCClientDemoDlg::OnBnClickedButtonSend() {
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (m_clientSocket.Send(m_message.GetBuffer(m_message.GetLength()), m_message.GetLength())) {
}else {
AfxMessageBox(L"Failed to send message");
}
}
Bước 10 – Trước tiên hãy chạy ứng dụng Máy chủ và sau đó là ứng dụng khách. Nhập ip và cổng máy chủ lưu trữ cục bộ và nhấp vào Kết nối.
Bước 11 – Bây giờ bạn sẽ thấy thông báo ở phía Máy chủ như trong ảnh chụp nhanh sau đây.