Socket 登陆上线注册 --- 客户端(2)

上一节是登录按钮,这一节是注册与发送按钮:
注册与登录按钮相差不多,连接服务器的操作都是一样的,就是注册是把用户信息传递给服务器,由服务器检查是否是已存在用户名,或者是否超出注册上限,根据服务器返回的消息来判断当前操作。 可以看一下之前写的服务器的文章,里面有对注册信息的处理;

void Cconnent1Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);

	//加载套接字
	WSADATA wsaData;
	char buff[10000];
	memset(buff, 0, sizeof(buff));//

	if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
	{
		printf("Failed to load Winsock");
		//return 0;
	}

	SOCKADDR_IN addrSrv; //服务端地址
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(5099);
	addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

	//创建客户端套接字
	sockClient = socket(AF_INET, SOCK_STREAM, 0);//流步套接字
	if (SOCKET_ERROR == sockClient) {
		printf("Socket() error:%d", WSAGetLastError());
		//return 0;
	}

	//向服务器发出连接请求
	if (connect(sockClient, (struct  sockaddr*)&addrSrv, sizeof(addrSrv)) == INVALID_SOCKET) {
		printf("Connect failed:%d", WSAGetLastError());
		//return 0;
	}
	else
	{
		//获取
		int i;
		for (i = 0; i < m_user.GetLength(); i++)
			user[i] = (char)(m_user.GetAt(i));
		user[i] = '\0';//清空i+1之后的数组内容

		i = 0;
		for (i = 0; i < m_pw.GetLength(); i++)
			pw[i] = (char)(m_pw.GetAt(i));
		pw[i] = '\0';

		recv(sockClient, buff, sizeof(buff), 0);
		//发送给服务器注册信息
		send(sockClient, "2", sizeof(user), 0);//发送请求服务类型,为1表示登录,为2表示注册
		Sleep(1);
		send(sockClient, user, sizeof(user), 0);//发送用户名 
		Sleep(1);
		send(sockClient, pw, sizeof(pw), 0);//发送密码
		Sleep(1);
		//清空buff以接收服务器传来的消息
		memset(buff, 0, sizeof(buff));
		recv(sockClient, buff, sizeof(buff), 0);
		if (strcmp(buff, "用户名已存在") == 0)
		{
			AfxMessageBox(_T("用户名已存在!"));
		}
		else
			if (strcmp(buff, "注册已满") == 0)
			{
				AfxMessageBox(_T("注册用户已满!"));
			}
			else
				if (strcmp(buff, "注册成功") == 0)
				{
					AfxMessageBox(_T("注册成功!")); 
					success = true;
				} 
	}

	
} 

发送按钮则是发送消息给服务器,由服务器接收转发:

void Cconnent1Dlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	//num = (char)(.GetAt(0));
	int i;
	for (i = 0; i < m_message.GetLength(); i++)
	{
		buff[i ] = (char)(m_message.GetAt(i));
	}
	buff[i] = '\0';
	//buff[0] = num;

	if (send(sockClient, buff, sizeof(buff), 0)<0)
		AfxMessageBox(_T("发送失败!"));
	else
		AfxMessageBox(_T("发送成功!"));
	//UpdateData(true);
	//if(send())

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值