社区
网络及通讯开发
帖子详情
昨天搞了半天用TClientSocket和TServerSocket传文件怎么老是大小不一致呢?
sailorcgh
2003-10-26 03:23:44
谁做过吗?可以指教一下吗?谢谢了睡觉了..,...
...全文
52
3
打赏
收藏
昨天搞了半天用TClientSocket和TServerSocket传文件怎么老是大小不一致呢?
谁做过吗?可以指教一下吗?谢谢了睡觉了..,...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gfh21cn
2003-10-27
打赏
举报
回复
先读出来,然后传递,最后写到文件中去
我是这样写的
FILE *tReadStream=fopen("","rb");
然后
传的时候,先传文件名,以及文件的大小
在接受方接收到文件名以后
char t_Buffer[MAX_LENGTH];
FILE *tWriteStream=fopen("","wb+");
long t_FileLength;
while(t_FileLength)
{
//循环接受
int t_ReciveLength=...
fwrite(t_Buffer,1,t_ReciveLength,tWriteStream);
t_FileLength-=t_ReciveLength;
}
Ri_syf
2003-10-27
打赏
举报
回复
来试试TMemoryStream对象,我使用它传输文件一切ok
TWinSocketStream *pStream = new TWinSocketStream(ClientSocket1->Socket,60000);
TMemoryStream *pms = new TMemoryStream();
发送文件:
try
{
memset(ReturnBuffer,0,sizeof(ReturnBuffer));
ReturnBuffer[0]=0x02;
//文件报头
ReturnBuffer[HEADSIZE+2]=0x7f;
//加载文件
pms->LoadFromFile(ReturnFullFileName);
//写文件名及传输文件大小
memset(ReturnBuffer+HEADSIZE+3,' ',FILENAME+FILESIZE);
memcpy(ReturnBuffer+HEADSIZE+3,ReturnFileName,strlen(ReturnFileName));
memcpy(ReturnBuffer+HEADSIZE+3+FILENAME,IntToStr(pms->Size).c_str(),strlen(IntToStr(pms->Size).c_str()));
pms->ReadBuffer(ReturnBuffer+HEADSIZE+3+FILENAME+FILESIZE,pms->Size);
ReturnBuffer[HEADSIZE+3+FILENAME+FILESIZE+pms->Size]='\0';
//传输数据
pStream->Write(ReturnBuffer,HEADSIZE+3+FILENAME+FILESIZE+pms->Size);
}
接收文件:
pms->Position = 0;
pms->WriteBuffer(buffer+报头字节,StrToInt(文件大小));
pms->SaveToFile(WriteFileName);
gdy119
2003-10-26
打赏
举报
回复
我建议你真要穿文件还是用别的控件
这两个控件总是出问题
delphi源码T
Server
Socket
和
TCl
ient
Socket
文件
传
输
delphi源码T
Server
Socket
和
TCl
ient
Socket
文件
传
输
Delphi之
TCl
ient
Socket
和T
Server
Socket
进行TCP长连接通讯使用KeepAlive自动发送心跳包检测断网
Delphi之
TCl
ient
Socket
和T
Server
Socket
进行TCP长连接通讯,使用KeepALive自动发送心跳包检测断网,并实现断线重连,经测试可以及时检测到拔掉网线断网情况,具有较高的参考价值
Delphi T
Server
Socket
和
TCl
ient
Socket
两个组件的基本用法
笔者在工作中遇到对局域网中各工作站与服务器之间进行
Socket
通信的问题。现在将本人总结出来的T
Server
Socket
和
TCl
ient
Socket
两个组件的基本用法写出来,希望与您分享。 Cl
ient
Socket
组件为客户端组件。它是通信的请求方,也就是说,它是主动地与服务器端建立连接。
Server
Socket
组件为服务器端组件。它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回复。
Server
Socket
组件可以同时接受一个或多个Cl
ient
Socket
组件的连接请求,并与每个Cl
ient
Socket
组件建立单独的连接,进行单独的通信。因此,一个服务器端可以为多个客户端服务。 设计思路
使用
TCl
ient
Socket
和T
Server
Socket
写的端口映射
使用
TCl
ient
Socket
和T
Server
Socket
写的端口映射供初学
Socket
编程的Delphi学者参考程序中设置最大会话数为20
Delphi之T
Server
Socket
和
TCl
ient
Socket
多线程
传
输
Delphi之T
Server
Socket
和
TCl
ient
Socket
多线程
传
输文字例子
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章