Visual C++网络编程经典案例详解 第8章 网络文件传输 使用Socket传输文件 接收文件

当客户端将文件数据发送到服务器以后
服务器应该负责接收文件并且在本地磁盘中创建相应文件接收数据

接收时 服务器第一次接收到的数据应该为文件名
后面接收到的数据均是文件数据

... //省略部分代码
SOCKET s,s1; //定义套接字对象
sockaddr_in addr2; //定义网络地址结构对象
char text[100]={0}; //定义缓冲区
s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //创建套接字
::bind(s,(sockaddr *)addr,sizeof(addr)); //绑定套接字
::listen(s,3); //监听套接字
s1=::accept(s,(sockaddr *)addr2,sizeof(addr2)); //应答连接请求
if(s1!=NULL)
{
	::recv(s1,&text,100); //接收文件名
	if(text!=0)
	{
		CFile file((LPSTR)text,CFile:modeReadWrite); //根据文件名创建文件
		if(file!=NULL) //判断文件是否创建成功
		{
			while(text!=0) //循环接收数据
			{
				::recv(s1,&text,100); //接收数据
				file.Write(&text,100); //写入文件
			}
			file.Close(); //关闭文件或套接字句柄
			::CloseHandle(s);
			::CloseHandle(s1);
		}
	}
}

程序表示服务器成功应答客户端的连接请求后
可以通过返回新套接字与客户端进行数据传输

首先 服务器接收文件名
如果接收的文件名不为NULL
则创建相同名称的文件

程序循环接收客户端发送的文件数据
并将这些数据写入新创建的文件中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值