⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logindlg.cpp

📁 用MFC 开发的基于UDP协议的网络科学计算中心,比较适用于局域网内
💻 CPP
字号:
// LoginDlg.cpp : implementation file
//

#include "stdafx.h"
#include "client.h"
#include "clientDoc.h"
#include "clientView.h"
#include "LoginDlg.h"
#include "winsock2.h"
#pragma comment (lib,"ws2_32.lib")
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////

// CLoginDlg dialog
CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLoginDlg::IDD, pParent)
{

	//{{AFX_DATA_INIT(CLoginDlg)
	//}}AFX_DATA_INIT
}


void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLoginDlg)
	DDX_Control(pDX, IDC_IPADDRESS, m_nIPAddr);
	DDX_Control(pDX, IDC_USER, m_nUser);
	DDX_Control(pDX, IDC_KEY, m_nKey);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
	//{{AFX_MSG_MAP(CLoginDlg)
	ON_BN_CLICKED(IDC_DEFAULT, OnDefault)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLoginDlg message handlers

void CLoginDlg::OnDefault() 
{
	m_nIPAddr.SetWindowText("127.0.0.1");
	m_nUser.SetWindowText("fanwenjun");
	m_nKey.SetWindowText("123456");
	UpdateData(FALSE);
}

struct AthParam
{
	int flag; 
	char user[10];
	char key[10];
};

void CLoginDlg::OnOK() 
{
	// TODO: Add extra validation here
	
//	CDialog::OnOK();
    WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	wVersionRequested = MAKEWORD( 2, 2 );
	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) {
		// Tell the user that we could not find a usable 
		// WinSock DLL.                                 
		return;
	}

	SOCKET send_s = socket(AF_INET,SOCK_DGRAM,0);
	if(send_s == INVALID_SOCKET)
	{
		MessageBox("Create socket Error");
		return;
	}

    m_nIPAddr.GetWindowText(strServer);
	m_nUser.GetWindowText(strUser);
	m_nKey.GetWindowText(strKey);

	sockaddr_in to_addr;
	to_addr.sin_family = AF_INET;
	to_addr.sin_port = htons(8341);
	to_addr.sin_addr.S_un.S_addr = inet_addr(strServer);

    CClientView::strServer=strServer;

	AthParam p;
	p.flag=4;
	strcpy(p.user,strUser);
	strcpy(p.key,strKey);
    

	char buf[100];
    memcpy(buf,&p,sizeof(p));
	int len=sizeof(to_addr);

    if((0==strcmp(strServer,""))||(0==strcmp(strUser,""))||(0==strcmp(strKey,"")))
	{
		MessageBox("请添入完整信息。");
	}
	else if(SOCKET_ERROR  == sendto(send_s,buf,sizeof(buf),0,(sockaddr*)&to_addr,sizeof(to_addr)))
	{                 
		MessageBox("Send Error");
		return;
	}
	else
	{
		recvfrom(send_s,buf,sizeof(buf),0,(sockaddr*)&to_addr,&len);
		if(0==strcmp(buf,"Login secucessful!"))
		{
		  CClientView::SetflagTrue();
		  CClientView::SetopenoffTrue();
		  ((CFrameWnd*)AfxGetMainWnd   ())->GetActiveView()->Invalidate();  
		}
	    else if(0==strcmp(buf,"UserID or Keywords wrong!"))
		{
			CClientView::SetflagFalse();
			CClientView::SetopenoffTrue();
			((CFrameWnd*)AfxGetMainWnd   ())->GetActiveView()->Invalidate();  
		}
		else
		{
			CClientView::SetflagTrue();
			CClientView::SetopenoffFalse();
           ((CFrameWnd*)AfxGetMainWnd   ())->GetActiveView()->Invalidate();  
		}
	}
	closesocket(send_s);
	WSACleanup();
    EndDialog(IDOK); 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -