社区
网络及通讯开发
帖子详情
昨天搞了半天用TClientSocket和TServerSocket传文件怎么老是大小不一致呢?
sailorcgh
2003-10-26 03:23:44
谁做过吗?可以指教一下吗?谢谢了睡觉了..,...
...全文
49
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自动发送心跳包检测断网,并实现断线重连,经测试可以及时检测到拔掉网线断网情况,具有较高的参考价值
使用
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
多线程
传
输文字例子
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
组件建立单独的连接,进行单独的通信。因此,一个服务器端可以为多个客户端服务。 设计思路
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章