Q
QSmile
Unregistered / Unconfirmed
GUEST, unregistred user!
在使用 ICS 传文件时,遇到了一些问题,希望有哪个用过相关操作的高人.给我点指点一下.
我的需要是,从一个 client 向一个 server 发送文件.
用 WSocket 与 WSocketServer
流程是Client先向 Server 发送 文件长度.
然后, Client 把文件以 8K 为一个包向 Server 发送. 没有放到结构体里的.
就直接发送原始数据.
一定发,到发送结束. 然后. server 端
检查接收的长度与文件长度是否相等.
大于或相等,就关闭文件句柄.关闭连接.表示文件接收完成.
while m_FileUpInfo.fStream.Size < m_FileUpInfo.DataLen do
begin
Application.ProcessMessages;
// 超时处理
end;
但我在测试时,发现有时,比如我发一个 21542 byte 的文件,只收到 21540 byte.
差一点点.
这个情况不是每次出现.发 50-100 个文件会出现一次.
而且每次差的字节也不相同.
按道理 TCP 的数据 发送与接收一般不会掉数据呀.只是不会自动分包.
这个如何解决?
那个高手做过.
我的需要是,从一个 client 向一个 server 发送文件.
用 WSocket 与 WSocketServer
流程是Client先向 Server 发送 文件长度.
然后, Client 把文件以 8K 为一个包向 Server 发送. 没有放到结构体里的.
就直接发送原始数据.
一定发,到发送结束. 然后. server 端
检查接收的长度与文件长度是否相等.
大于或相等,就关闭文件句柄.关闭连接.表示文件接收完成.
while m_FileUpInfo.fStream.Size < m_FileUpInfo.DataLen do
begin
Application.ProcessMessages;
// 超时处理
end;
但我在测试时,发现有时,比如我发一个 21542 byte 的文件,只收到 21540 byte.
差一点点.
这个情况不是每次出现.发 50-100 个文件会出现一次.
而且每次差的字节也不相同.
按道理 TCP 的数据 发送与接收一般不会掉数据呀.只是不会自动分包.
这个如何解决?
那个高手做过.