Visual C++网络编程经典案例详解 第8章 网络文件传输 使用Socket传输文件 服务器代码 代码分析 文字通信 接收文字

本文详细介绍了服务器如何处理客户端的连接请求,并实现文件传输与文字通信功能。通过使用套接字地址对象和全局变量,服务器能够跟踪已连接的客户数量,接收并处理客户端发送的数据,同时提供保存文件和清屏功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器除了文件传输 还要文字通信功能
接收代码如下

int n=0; //定义全局变量n
SOCKADDR_IN add; //套接字地址对象
CString str13;
void CMyDlg::Onsockt1(WPARAM wParam,LPARAM lParam)
{
	char cs[100],cs1[10000],name[15];
	switch(lParam)
	{
		case FD_ACCEPT: //处理连接请求
		{
			s1=::accept(s,NULL,NULL); //接受客户端连接请求
			n=n+1; //计数
			str13.Format("有%d客户已经连接上了",n); //格式化字符串
			this->SetWindowText(str13);
			GetDlgItem(IDC_EDIT1)->GetWindowText((LPTSTR)cs1,10000);
			::getpeername(s1,(SOCKADDR*)&add,(int*)sizeof(add));
			//获取连接对方的ip地址
			
			str13+=cs1;
			str13+="\r\n";
			str13+=::inet_ntoa(add.sin_addr); //转换主机字节的IP
			str13+="登录";
			GetDlgItem(IDC_EDIT1)->SetWindowText(str13);
		}
		break;
		case FD_READ: //处理读取事件
		{
			GetDlgItem(IDC_SAVE)->EnableWindow(true); //使用保存文件按钮
			GetDlgItem(IDC_CLEAR)->EnableWindow(true); //使用清屏文件按钮
			s1=::accept(s,(sockaddr *)addr2,sizeof(addr2)); //应答连接请求
			CString num="";
			recv(s1,cs,100,NULL); //接受数据
			GetDlgItem(IDC_EDIT1)->GetWindowText((LPTSTR)cs1,10000);
			num+=(LPARAM)cs1;
			num+="\r\n";
			num+=::inet_ntoa(add.sin_addr); //将IP转换为主机顺序
			num+="对您说: ";
			num+=cs;
			GetDlgItem(IDC_EDIT1)->SetWindowText(num);}
			break;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值