我的socket传输速度怎么这么慢??

hugefeng 2006-09-17 02:21:32
我用mfc的socket类编料一个内网的文件传输程序,基于tcp协议。实现过程大致如下:
首先文件的发送端连接接收端的监听线程,监听线程用一个新的线程去accept它。这个新的线程有一个单独的类。
我在这个类里面做了如下处理:
在onreceive函数里receive数据并交给这个类其他函数处理。如果是接收到的一个发送文件的请求,并附带有文件的相关信息,就弹出一个对话框,让用户处理是否接收。如果接收,就发送一个确认信息给发送端。发送端接收到这个信息后就开辟一个线程,用while循环读取文件并发送。接收端就接收并向硬盘里面里写(还是在onreceive里面接收并交给其他函数处理。发现速度不到一M。后来我把接收这端改了一下,改为用一个线程(while循环)来接收(但还是采用的刚才那个类,所以onreceive函数里就不能接收了,直接return)。补充一点:文件的信息还是在onreceive函数里面接收并交给其他函数处理。也就说我的接收线程是在用户点击确定接收的按钮后开辟的。改了速度就更慢了。我用其他软件传50m的东西5,6秒就搞定了,我这个估计得5-6分钟。怎么回事啊,望高手们指教。还有这个程序运行时cpu占用率经常来个0%。就感觉它在那儿没干事。还有一两天就交了。再不出来我就快跳楼了。
...全文
706 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudgamer 2006-09-19
  • 打赏
  • 举报
回复
线程问题
precipitant 2006-09-18
  • 打赏
  • 举报
回复
mark
Elysium 2006-09-18
  • 打赏
  • 举报
回复
做一个CSocket继承类,增加线程处理
hugefeng 2006-09-17
  • 打赏
  • 举报
回复
我把发送注释后,读2,3秒就完了。发的慢
su47flying 2006-09-17
  • 打赏
  • 举报
回复
你调试一下,看看是读文件慢,还是发的慢。
hugefeng 2006-09-17
  • 打赏
  • 举报
回复
文件的信息还是在onreceive函数里面接收并交给其他函数处理?就是判断一下是不是要发送文件过来,然后弹出一个对话框问用户接收还是不接收。接收的话就开一个线程来接受。但是onreceive函数就直接return了。
DentistryDoctor 2006-09-17
  • 打赏
  • 举报
回复
看来代码问题不轻呀。100M的局域内,文件传输应该可以达到7~8MB/s吧。
文件的信息还是在onreceive函数里面接收并交给其他函数处理?什么样的处理?
还有这个程序运行时cpu占用率经常来个0%。?线程有没有同步或死锁一类的问题?
是得好好调试一下了。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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