那种方式发送文件好

netyou 2003-10-18 11:47:52
用SendBuf拆包发送文件和NMStrm,NmStrmServ采取流的方式发送文件比较那一个好一些,优点是什么?
...全文
69 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluedodo 2003-10-21
  • 打赏
  • 举报
回复
我也想发送文件,但可以用附件的方式吗?这样是不是简单一些~~
duduwolf 2003-10-20
  • 打赏
  • 举报
回复
BOOL SendStream(AnsiString addr, u_short port, TMemoryStream* Stream)
{
char buf[PACKAGESIZE];
int block = 0;
SOCKET s;
Stream->Seek(0,soFromBeginning);
block = floor(Stream->Size/sizeof(buf));

s = Connect_Server(addr,port);
if (!s) {
//发送数据失败
return false;
}
for (int i = 1; i<=block; i++) {
Stream->Read(buf,sizeof(buf));
Stream->Seek(i*sizeof(buf),soFromBeginning);
if (s) {
send(s,buf,sizeof(buf),0);
}
else
return false;
Application->ProcessMessages();
}
int others = Stream->Size-(block*sizeof(buf));
if (others>0) {
if (s) {
Stream->Read(buf,others);
send(s,buf,others,0);
}
else
return false;
}
closesocket(s);
return true;
}

// 从远程主机的指定端口接收数据流
BOOL RecvStream(SOCKET s, TMemoryStream* Stream)
{
char buf[PACKAGESIZE];
struct sockaddr_in client;
int ns;
int namelen;
int pktlen;

namelen = sizeof(client);
if ((ns = accept(s, (struct sockaddr *)&client, &namelen)) ==-1) {
//Accept()失败
return false;
}
int i = 1;
for (;;i++) {
Application->ProcessMessages();
if ((pktlen = recv(ns,buf,sizeof(buf),0))<0) {
//接收数据失败
return false;
}
else if (pktlen == 0)
break;
else {
Stream->Seek(0,soFromEnd);
Stream->Write(buf,pktlen);
}
}
Stream->Seek(0,soFromBeginning);
closesocket(ns);
closesocket(s);
return true;
}
pp616 2003-10-20
  • 打赏
  • 举报
回复
int send(SOCKET s,const char* buf,int len,int flags);

pp616 2003-10-20
  • 打赏
  • 举报
回复
我用send

嘻嘻:)
wyb_45 2003-10-20
  • 打赏
  • 举报
回复
自己定义数据格式发送和接收数据包
sendbuf
可以
nuaacims 2003-10-19
  • 打赏
  • 举报
回复
我用过SendBuf的缓冲方式,没有试过Stream方式,我只是要发字符,所以SendBuf简单够用了,建议用用Stream方式
netyou 2003-10-19
  • 打赏
  • 举报
回复
等待ing
开发背景随着时代的进步和科技的发展,计算机网络的发展日新月异,深刻的影响着我们的生活,受疫情的影响,为了方便教师和学生打印文件以及取文件,节约学生和老师等待时间,节约打印店的打印成本,提高打印店的打印效率,开发一款在线的打印系统是十分有必要的,校园在线打印预约系统把上传文件、选择打印店、打印支付、打印完成取文件以及管理功能集成一身,各管理人员分工合作、相互配合,及时完成打印任务。也方便打印店打印更方便更节约成本的打印文件以及节约学生的空闲时间。现阶段学校的打印文件模式都是传统的打印方式:学生需要跑到打印店拿QQ,微信,U盘给打印店的电脑上传文件,在等待别人打印完成后才能让打印店管理员打印文件,打印店管理员需要一个一个选择文件打印,在打印高峰期间,管理员打印文件忙不过来,不能给同学良好的打印服务,所以传统的打印文件方式不满足与当前社会的发展趋势。 开发目的利用现代计算机相关技术来进行在线打印预约,以减轻打印店工作人员的工作负担以及提高工作效率,减少学生打印等待时间。学生只需要上传需要打印的文件,然后选择打印店,选择支付以及去打印文件大概时间就可以,而打印店管理员只需要接收学生发的文件,以及打印,把打印的文件整理即可,可以根据学生取文件的时间自己编排打印文件的顺序,更好的利用时间,提高打印文件效率。 项目简介该项目是基于SpringBoot+SSM校园在线打印预约系统,包含两个角色:一个是用户模块,一个是打印店管理员模块。用户模块下面有个人中心模块,店铺选择模块,资料分享模块,资料分享模块,交易记录模块,使用帮助模块。在打印店管理员模块下有点单管理模块,店铺管理模块,价格管理模块。 项目运行截图下面从登录页面、用户界面和打印店管理页面三个部位来叙述全部系统。用户、商店和管理员都必须登录才可以浏览在线管理系统系统。管理员可以管理方法商店,但管理员可以是商店。用户登录输入校园在线打印预约系统的网址后,电脑浏览器将进到校园在线打印预约系统。会先进到系统的主页。用户可以先浏览系统首页,随后登录。用户注册如果登录者尚未注册,您需要注册一个帐户。单击右侧的注册按钮,将显示注册页面。用户需要填写用户名、电话号码、登录密码等信息。输入手机号码后,点击发送验证码,验证码就会发送到手机上。填写完毕后,点击注册按钮。添加后会跳转到登录页面。注册界面如图 短信验证码发送成功后,在线预约打印系统会弹出提示,此时用户的手机就会收到短信验证码。短信验证码发送成功界面如图进行账号注册。用户收到短信验证码如图 用户登录后的首页店铺详情个人中心      积分记录我的文件  文件共享管理员登录订单信息  订单详情店铺信息  价格设置 项目论文      

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧