CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

[200分请教]出现异常却不知怎么回事?

楼主leemingsong(陨石)2001-03-26 13:35:00 在 C++ Builder / 基础类 提问

本人现在做一个实时局域网语音聊天工具,就像IP电话一样  
  操作系统:win2000(局域网)  
  涉及技术:BCB的TServerSocket,TClientSocket及多线程还有多媒体MCI的函数  
                      waveInxxx、waveOutxxx等  
  开发阶段:现在已经有了原型  
  程序实现:1)Socket工作方式非阻塞式  
                    2)工作双工,两个线程ReceiveAndPlay接收播放,RecordAndSend录音发送  
                        接收发送通过Socket,数据量很大而且不停机(>10*8kps)、每数据包>2K  
                    3)接收、发送都有缓冲队列  
                     
  问题出处:  
                    1)[目前主要问题]运行时有时会出现严重的内存错误,异常报告如下  
                    异常0x0eedfade位置为0x77e69b01  
                    0x0045c992指令引用0x807f7f83内存,该内存不能为written  
                    0x0045c71e指令引用0x807f7f83内存,该内存不能为written  
                    2)数据包大了,有丢包现象  
                    3)声音有较大延迟、抖动想象  
                    4)在Win98下运行大部分机会是蓝屏出错好像是vxd...?...  
  可能问题域:   1)是不是数据包太大的缘故?  
                          2)是不是线程安全问题?  
                          3)是不是多媒体设备或由于播放数据包切换频繁原因?  
  给分原则:  
                    1)声明本人给分信誉良好,200分少可再加  
                    2)回答部分疑问,只要对解决问题有帮助同样酌情给分,哪怕一句话  
                    3)提出有益的类似技术解决方案如NetMeeting、IPPhone等,只要可行可参考  
                        (代码级最好),马上给分。(很急呀!!!大虾们帮忙)  
  问题点数:200、回复次数:26Top

1 楼leemingsong(陨石)回复于 2001-03-26 15:54:00 得分 0

why?没人过问!!!Top

2 楼ALNG(?)回复于 2001-03-26 16:04:00 得分 100

1)是你的代码的问题,主要因为使用了未分配(初始化)或已释放的指针。  
  解决办法:调试,设置断点,找出发生错误的位置,判断是哪个指针出的问题;在删除对象时最好  
  把指针置NULL,   以便于调试。  
   
  Borland的Community上有一篇文章将AV问题,你可以去查一下。Top

3 楼holyfire(谁最衰啊你最衰,谁最帅啊我最帅)回复于 2001-03-26 17:14:00 得分 0

可否考虑一下压缩数据减轻网络的压力。Top

4 楼ALNG(?)回复于 2001-03-26 17:17:00 得分 0

Use   UDP   instead   of   TCPTop

5 楼ALNG(?)回复于 2001-03-26 17:56:00 得分 0

I   'd   like   your   source   code,   can   you   share   it   with   me.  
  alng@8848.net  
   
  Thanks.Top

6 楼yhec(@_@ 俺是贫农俺怕谁)回复于 2001-03-27 08:45:00 得分 20

估计是多线程的问题,C++BUILDER与DELPHI  
  适合快速编程应用,如数据库应用等,不适  
  合做实时语言聊天类的东东,这些东东宜选  
  VC++做;Top

7 楼leemingsong(陨石)回复于 2001-03-27 13:32:00 得分 0

谢谢楼上各位,还有吗???Top

8 楼ALNG(?)回复于 2001-03-27 16:02:00 得分 0

I   'd   like   your   source   code,   can   you   share   it   with   me.  
  alng@8848.net  
   
  Thanks.   Top

9 楼leemingsong(陨石)回复于 2001-03-27 21:41:00 得分 0

谢谢楼上各位,还有吗???   Top

10 楼Iwant(天狼)回复于 2001-03-27 22:16:00 得分 0

还是我来给你一个吧.  
  http://hanzc.topcool.net/    
  有,还有原程序.用       BCB   做的.  
  好象有好多人问这个问题是不是????????Top

11 楼leemingsong(陨石)回复于 2001-03-30 22:46:00 得分 0

参考了以下,东西相似,有参考价值,谢谢  
  但异常的问题依然存在,敢问?......Top

12 楼Raptor(猛禽)回复于 2001-03-31 11:18:00 得分 25

1。可能是线程处理中出错,建议用阻塞TCP方式,既然已经用了线程为什么不用阻塞呢。  
  2。包太大,一般WINSOCK的缓冲不大,4-8K,我用256B的包传过大文件没有问题  
  3。如果网络速度跟不上,这种情况很难避免,用压缩可能会有改善,加大缓冲也可,但会加大延时。  
  4。那我就不知道了,这什么原因都可能,估计是线程和SOCKET的问题,与1有关。Top

13 楼leemingsong(陨石)回复于 2001-04-01 19:29:00 得分 0

提问者再加说明:(先谢过楼上各位)  
  1。单机模拟实现两台机peer   to   peer好象瞒正常,偶尔蓝屏  
  2。录音成PCM   11.025KHz不是已经压缩了吗,还要压缩,压缩率会如何  
  3。Iwant(天狼) 兄提供的线索,该程序在98下只能单工,为什么?  
  4。目前实现多线程指[录音发送]、[接受播放]两线程,用Socket的阻塞方式能行吗,谁有Socket阻塞方式的示范程序,小弟谢过!Top

14 楼leemingsong(陨石)回复于 2001-04-04 23:45:00 得分 0

?Top

15 楼Iwant(天狼)回复于 2001-04-05 01:32:00 得分 25

出现异常的原因我也不是很清楚.不过我在跟踪时发现一个很奇怪的现象.  
  当一个   录音buffer   写满时   ,确触发了   3   次   buffer   满事件.  
  原因我也说不清楚.后来我只有把这个   异常   丢掉   才可以了.  
  出现异常的原因好象   与   非阻塞方式   无关.而是BCB   处理   Windows   消息时引起的.导致突然在传输是   Socket   中断,引起的,好象是   SendBuffer   函数有问题.  
  具体原因我也不太明白.Top

16 楼leemingsong(陨石)回复于 2001-04-05 04:28:00 得分 0

提问者再加说明(2):  
  1.多次运行调试时程序异常出现的CPU窗口,标题好像是TThread,然后指令是关于   :LoadResString的  
  2。以前曾经做过一个两机互发字符串的程序,如果连续发送,接收方就会丢数据(同样非阻塞方式)  
  大虾快快帮忙呀!!!我要“死”了Top

17 楼darkwood(堕落天使)回复于 2001-04-06 01:07:00 得分 0

关注!!  
   
  楼上的可以把原代码发给我一份吗?wwwfriends@21cn.com.   谢谢。Top

18 楼xskyssdt(ff)回复于 2001-04-06 10:14:00 得分 0

不要用Tserversocket,用socket   apiTop

19 楼leemingsong(陨石)回复于 2001-04-07 13:29:00 得分 0

  Top

20 楼actinia(海葵)回复于 2001-04-07 23:54:00 得分 0

关注!Top

21 楼leemingsong(陨石)回复于 2001-04-09 14:43:00 得分 0

复1:  
        ALNG(阿良) 、darkwood(堕落天使) 要源程序,总要等我问题搞定了再说吧  
  复2:  
        Iwant(天狼)兄   http://hanzc.topcool.net/   是你的个人主页吗,参考过你的源代码,  
        很有帮助,谢谢,希望以后能做个朋友!  
  复3:ALNG,yhec(^0^),IWant   已得部分分数  
  //////////////////////////////////////////////////////////////////////  
  //问题继续:  
  //1:播放一个个包难以避免包之间会有声音断续,怎么办?  
  //2:   录好的缓冲已具有波形声音格式(本身已压缩),再压缩怎么办?用Huffman,LZW?  
  //////////////////////////////////////////////////////////////////////Top

22 楼holyfire(谁最衰啊你最衰,谁最帅啊我最帅)回复于 2001-04-09 15:17:00 得分 10

可以降低声音的采样率,8k就可以了,单声道就可以了。这样声音的数据就不多了,再用ADPCM格式,Huffman压缩应该没问题。Top

23 楼Iwant(天狼)回复于 2001-04-16 22:27:00 得分 20

包当然必须是一个一个播放,有短续   当然是不可避免的了。  
  关键是要压缩,Huffman   应该没有问题。不过不知道怎么用。  
   
   
  对     http://hanzc.topcool.net       是我的主页Top

24 楼leemingsong(陨石)回复于 2001-05-11 08:48:00 得分 0

虽然文体还没彻底解决,不过呢得到各位大虾帮助深感荣幸,时间也差不多了,东东也做的差不多了,现在就给分吧,两个字“信用”!Top

25 楼ALNG(?)回复于 2001-05-11 09:00:00 得分 0

leemingsong,   thanx,   but   how   about   your   source   code?Top

26 楼czylj(夭夭)回复于 2001-05-25 23:36:00 得分 0

udp一次一KTop

相关问题

  • 添加资源时出现异常,怎么回事?
  • 不知怎么回事?
  • 不知道怎么回事?
  • 我编译新内核后总是出现kernel panic,不知怎么回事!
  • 编译时出现大量的LINK2001和LINK2019,不知道怎么回事.
  • 未处理的“System.FormatException”类型的异常出现在 mscorlib.dll 中 是怎么回事?
  • 我的程序退出时出现这样异常,到底是怎么回事?
  • proxool关闭的时候出现这样的异常是怎么回事呢?
  • 用hibernate+mssql开发出现了net.sf.hibernate.dialect.SQLServerDialect异常是怎么回事啊
  • 不知道怎么回事儿(.DLL)

关键词

  • .net
  • 线程
  • 内存
  • 指针
  • 多线程
  • 指令
  • 代码
  • bcb
  • alng
  • 压缩

得分解答快速导航

  • 帖主:leemingsong
  • ALNG
  • yhec
  • Raptor
  • Iwant
  • holyfire
  • Iwant

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo