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

📄 register.cpp

📁 visual c++ 实例编程
💻 CPP
字号:
// Register.cpp : implementation file
//

#include "stdafx.h"
#include "Client.h"
#include "Register.h"
#include "clientdlg.h"

#define DEST_IP_ADDR "127.0.0.1"
#define PORT (u_short)56789
#define NO_FLAGS_SET 0
#define FIRST 131

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern BOOL bBegin;
/////////////////////////////////////////////////////////////////////////////
// CRegister dialog


CRegister::CRegister(CWnd* pParent /*=NULL*/)
	: CDialog(CRegister::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRegister)
	m_truename = _T("");
	m_username = _T("");
	m_reID = _T("");
	m_ID = _T("");
	m_mail = _T("");
	m_place = _T("");
	m_age = _T("");
	//}}AFX_DATA_INIT
}


void CRegister::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRegister)
	DDX_Control(pDX, IDC_SEX, m_sex);
	DDX_Control(pDX, IDC_PICTURE, m_pic);
	DDX_Text(pDX, IDC_TRUENAME, m_truename);
	DDX_Text(pDX, IDC_USERNAME, m_username);
	DDX_Text(pDX, IDC_REID, m_reID);
	DDX_Text(pDX, IDC_ID, m_ID);
	DDX_Text(pDX, IDC_MAIL, m_mail);
	DDX_Text(pDX, IDC_PLACE, m_place);
	DDX_Text(pDX, IDC_AGE, m_age);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRegister, CDialog)
	//{{AFX_MSG_MAP(CRegister)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRegister message handlers

BOOL CRegister::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
//////////////////////////头像选择////////////////////////////////////
	m_pic.SetItemHeight(-1, m_pic.m_sizeIcon.cy + 6);
	char str_pic[20];
	for(int i=1;i<=25;i++)
	{
		if(i<10)
			sprintf(str_pic,".\\face\\0%d.ico",i);
		else
			sprintf(str_pic,".\\face\\%d.ico",i);
		m_pic.AddIcon(str_pic);
	}
	
	m_pic.SelectIcon(0);
//////////////////////////////////////////////////////////////////////
////////////////////////////sex///////////////////////////////////////
	m_sex.AddString("male");
	m_sex.AddString("female");
	m_sex.SetCurSel(1);
//////////////////////////////////////////////////////////////////////
	Init_net();	
///////////////////////////////////////////////////////////////////////////////

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRegister::OnOK() 
{
	// TODO: Add extra validation here
//	Init_net();		//初始化
	UpdateData();
	if(m_username.IsEmpty()||m_age.IsEmpty()||m_ID.IsEmpty()||m_reID.IsEmpty())
		MessageBox("请输入所有的基本信息!","网际飞标",MB_OK);
	else if(m_ID!=m_reID)
	{
		MessageBox("两次输入的密码不一致!\n请重新输入!","网际飞标",MB_OK);
		m_ID=m_reID="";
		UpdateData(false);
	}
	else
	{
		if(Reg())
		{
//			close(destSocket);
			closesocket(destSocket);
			CDialog::OnOK();
			bBegin=true;
			CClientDlg dlg;
			dlg.m_username=m_username;
//			dlg.res=res;
			dlg.DoModal();
		}
		else
		{
			MessageBox("注册过程有误!\n请稍后再试!","网际飞标",MB_OK);
		}
	}
}

BOOL CRegister::Reg()
{
	CString sex;
	if(m_sex.GetCurSel())
		sex="male";
	else
		sex="female";
	res=m_pic.GetCurSel()+FIRST;
////////////////////////发送注册信息并接收反馈信息/////////////////////////////
	char sendText[300],recvText[100];
	sprintf(sendText,"Reg:%s,%s,%s,%s,%s,%s,%s,%d",m_username,m_age,sex,m_ID,m_truename,m_place,m_mail,res);
	numsnt=send(destSocket, sendText, strlen(sendText) + 1, NO_FLAGS_SET);
	if (numsnt != (int)strlen(sendText) + 1)
    {
		MessageBox("ERROR: Connection terminated!","网际飞标",MB_OK);
		status=closesocket(destSocket);
		if (status == SOCKET_ERROR)
			MessageBox("ERROR: closesocket unsuccessful!","网际飞标",MB_OK);
	    status=WSACleanup();
		if (status == SOCKET_ERROR)
			MessageBox("ERROR: WSACleanup unsuccessful!","网际飞标",MB_OK);
		return false;
    }

	numrcv=recv(destSocket, recvText, 100, NO_FLAGS_SET);
	if ((numrcv == 0) || (numrcv == SOCKET_ERROR))
    {
      MessageBox("ERROR: Connection terminated!","网际飞标",MB_OK);
      status=closesocket(destSocket);
      if (status == SOCKET_ERROR)
		  MessageBox("ERROR: closesocket unsuccessful!","网际飞标",MB_OK);
      status=WSACleanup();
      if (status == SOCKET_ERROR)
		  MessageBox("ERROR: WSACleanup unsuccessful!","网际飞标",MB_OK);
      return false;
    }
	recvText[numrcv]='\0';
	if(strcmp(recvText,"success!")!=0)
		return false;
///////////////////////////////////////////////////////////////////////////////
	return true;
}

BOOL CRegister::Init_net()
{
/////////////////////////网络初始化///////////////////////////////////
	status=WSAStartup(MAKEWORD(1, 1), &Data);
	if (status != 0)
		MessageBox("ERROR: WSAStartup unsuccessful!","网际飞标",MB_OK);
	destAddr=inet_addr(DEST_IP_ADDR);		//暂时定为本机使用
	memcpy(&destSockAddr.sin_addr, &destAddr,sizeof(destAddr));
	destSockAddr.sin_port=htons(PORT);
	destSockAddr.sin_family=AF_INET;
	destSocket=socket(AF_INET, SOCK_STREAM, 0);
	if (destSocket == INVALID_SOCKET)
	{
		MessageBox("ERROR: socket unsuccessful!","网际飞标",MB_OK);
		status=WSACleanup();
		if (status == SOCKET_ERROR)
			MessageBox("ERROR: WSACleanup unsuccessful!","网际飞标",MB_OK);
		return false;
	}
//////////////////////////////////////////////////////////////////////
///////////////////////////连接网络////////////////////////////////////////////
	status=connect(destSocket, (LPSOCKADDR) &destSockAddr,sizeof(destSockAddr));
	if (status == SOCKET_ERROR)
	{
		MessageBox("ERROR: connect unsuccessful!","网际飞标",MB_OK);
		status=closesocket(destSocket);
		if (status == SOCKET_ERROR)
			MessageBox("ERROR: closesocket unsuccessful!","网际飞标",MB_OK);
		status=WSACleanup();
		if (status == SOCKET_ERROR)
			MessageBox("ERROR: WSACleanup unsuccessful!","网际飞标",MB_OK);
		return false;
	}
	return true;
}

⌨️ 快捷键说明

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