首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

文件传输有关问题

2013-04-02 
文件传输问题本帖最后由 stacksg 于 2012-11-23 21:07:15 编辑byte *pBuf new byte[1024]//申请这样的

文件传输问题
本帖最后由 stacksg 于 2012-11-23 21:07:15 编辑

byte *pBuf = new byte[1024];    //申请这样的内存好还是直接byte* pBuf;这样的好?
FILE* fp; int i_len; 
if(fp = fopen("video.h264", "rb"))
{
    while((i_len = fread(pBuf, 1024, 1, fp)) > 0)
    {
        send(sock, (char*)pBuf, i_len, 0);//这样发送的话,客户端接收好像跟不上发送速度
        memset(byte, 0, 1024);
    }
} delete pBuf;   //重复使用申请的内存有没有什么隐患? 
/*
1. 在select中,这么发送数据好像不好吧?我觉得应该开一个线程来发送文件内容,不然会把处理发送集给堵塞住
了,有什么更好的做法吗?求代码,我也看了飞鸽传书的源码,只是看的有些迷糊.
2. 服务端如此着急的发送数据,好像客户端会跟不上接收速度.求一段客户端接收连续数据和发送连续数据的代码.
3. 还有就是内存问题,这样申请一段内存,而且重复使用有问题吗?
*/

[解决办法]
建议文件一次读到缓冲区,然后分多次发送。
你是TCP连接吗,TCP连接可以保证客户端收到数据。
[解决办法]
1.可以新启一个线程用于发送,如果主线程不做别的什么事情就不用了。
2.发送端如果发现发送缓冲区满了,会自动阻塞的。
3.如果频繁的申请释放内存会导致内存碎片,建议此时用一个数组。
[解决办法]
我觉得楼主关键问题在于接收
直接把数据丢进缓存区还是玩互相拷贝?

1.可以加个sleep降低发送速率,给接收时间
2.接收端单独线程负责拷贝内容,不做其他处理

[解决办法]
这蛋疼代码没有错误?????

热点排行