Visual C++网络编程经典案例详解 第6章 网络通信器 通信原理 发送接收 客户端设置异步模式

现在 用户创建完套接字以后
可以使用该套接字进行数据的发送和接收操作
为了方便用户书写代码
可以通过函数WSAAsyncSelect()将套接字设置为异步模式
即有相应消息到来时才调用相应的代码

将客户端设置为异步模式
应该首先自定义消息
然后声明消息响应函数
最后设置异步套接字

首先,在头文件“网络通信2Dlg.h”中
调用消息WM_SOCKT

#define WM_SOCKT WM_USER+1

然后 在头文件中声明消息响应函数
保护属性设置为public

afx_msg void Onsockt1(WPARAM wParam,LPARAM lParam);

最后 设置套接字为异步模式并在消息响应函数中添加代码 代码如下

... //省略部分代码
::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKT,FD_READ|FD_ACCEPT);//设置异步套接字
void CMy2Dlg::Onsockt1(WPARAM wParam,LPARAM lParam)//消息响应函数
{
	switch(lParam)
	{
		case FD_READ: //处理读取事件
			char s2[100]={0},ssa[20000];
			CString data="";
			sockaddr_in add;
			::memset(&add,0,sizeof(add)); //套接字地址结构变量
			::getpeername(s,(SOCKADDR*)&add,(int*)sizeof(add));
			//获取对方ip地址
			recv(s,s2,100,NULL);//接收数据
			GetDlgItem(IDC_EDIT1)->GetWindowText((LPTSTR)ssa,20000);
			data+=(LPTSTR)ssa; //格式化数据
			data+="\r\n"; //换行
			data+=::inet_ntoa(add.sin_addr); //转换ip地址顺序
			data+="对您说:";
			data+=s2;
			GetDlgItem(IDC_EDIT1)->SetWindowText(data); //设置界面
	}
}

先设置异步模式
等消息来了再处理
Onsockt1是消息响应函数
代码只处理FD_READ消息
字符串要先初始化成空字符串
套接字是 ip地址+端口
复制套接字时 要开一个内存空间
接收的数据要格式化
为了美观 直白要换行
处理完数据就把数据显示在界面上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值