说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

高手来找茬,高分等你拿~

编辑:说三道四文库 发布时间:2017-10-20 05:03
HTML文档下载 WORD文档下载 PDF文档下载

偶用VB的winsock想编一个语音传输的东东,结果调试了好久不能通过,希望各位高手帮忙找找错误,
偶把程序最主要的部分帖出来,大家帮忙看看,先谢了~
给分原则:提意见10分,找到一个错误20分(并帮忙改正30分),有更好的代码40分(错误或代码请说得详细些)

-----------------
服务器端
-----------------
Option Explicit

'初始化
Private Sub Form_Load()
TcpS.LocalPort = 1801 '设置端口         ’TCPS为服务器端winsock控件
TcpS.Listen   '监听

'响应连接
Private Sub TcpS_ConnectionRequest(ByVal requestID As Long)
 If TcpS.State <> sckClosed Then TcpS.Close
 TcpS.Accept requestID
End Sub

'文件接收
Private Sub TcpS_DataArrival(ByVal bytesTotal As Long)
Dim flen As Long
Dim myfile As Byte
TcpSLen.GetData flen          'TcpSLen为接受文件长度的winsock控件
Open "d:\hello.wav" For Binary As #2
Do While (LOF(2) < flen)     '判断文件是否读完
TcpSFile.GetData myfile      '接受文件
Put #2, , myfile             '按字节字节写入目标文件
Loop
Close #2
 MsgBox "文件传送完毕!"
End Sub

Private Sub Form_Unload(Cancel As Integer)
TcpSLen.close
TcpS.Close
End Sub

Private Sub TcpS_Close()
If TcpS.State <> sckClosed Then TcpS.Close
  MsgBox "服务器通道已关闭!"
  End
End Sub

Private Sub TcpS_Connect()
  MsgBox "连接成功!"
End Sub


-------------------------
客户端
-------------------------
'初始化
Private Sub Form_Load()
TcpC.RemoteHost = "wp"              'TcpC为客户端winsock控件
TcpC.RemotePort = 1801
TcpC.LocalPort = 1802
TcpC.RemoteHostIP = TcpC.LocalIP          '在同一个机器里运行,测试时服务器和客户端IP相同
CommonDialogC.FileName = "*.wav"
End Sub

Private Sub Form_Unload(Cancel As Integer)
TcpC.Close
TcpCLen.Close
End Sub

'建立连接
Private Sub CmdConnect_Click()
TcpC.Connect
On Error GoTo TransferError
CState.Caption = "连接中..."
TransferError:
MsgBox "服务器未开或网络出错!"
End
End Sub

'接收文件
Private Sub CmdSoundSend_Click()
Dim myfile As Byte
Dim flen As Long
Open "d:\hi.wav" For Binary As #1
flen = LOF(1)         '文件长度
TcpCLen.SendData (flen)  '接受文件长度的winsock控件
Do While Not EOF(1)  '判断是否到达文件末尾
Get #1, , myfile     '按字节读文件
TcpCFile.SendData myfile '按字节传文件
Loop
Close #1
 MsgBox "传送完毕!"
End Sub

Private Sub TcpC_Close()
 MsgBox "服务器通道已关闭!"
  End
End Sub

Private Sub TcpC_Connect()
  MsgBox "连接成功!"
End Sub

-----------------------------------


问题1:不能实现传输,连接不成功

问题2:服务器端在VB里只能运行一次,第二次运行就死了,将TcpS.Listen注释掉就好了,
怀疑是winsock控件的问题,但是关闭FORM时确实执行了Tcps.close,不解?(客户端没有这种情况!)

问题3:服务器端的TcpSLen是否也可用TcpS控件代替,这样传数据时会不会乱?

问题4:如果加上文本聊天等功能,数据传输是否都可用一个winsock控件,怎么解决?
如果文件传输和文字传输各单独用一个winsock控件是否初始化时都要设置端口,建立监听等?

问题5:文字聊天的代码,加进去有没有错?
'发送文本信息
Private Sub CmdSend_Click()
TcpCTxt.SendData TxtSend.Text
End Sub
'接受文本信息
Private Sub TcpC_DataArrival(ByVal bytesTotal As Long)
Dim TxtDate As String
TcpC.GetData TxtDate
TxtReceive.Text = TxtDate
End Sub

问题6:这个程序主要用来传语音,这种编码是否不妥?谁有更好,效率更高的代码?
'附传输文件的另一种编码
 Dim i, j, flen As Long
   flen = FileLen(CommonDialogC.FileName)
    For i = 0 To flen \ 4000
    If flen < 4000 Then
     ReDim myfile(1 To flen) As Byte
       Open CommonDialogC.FileName For Binary As #1
       Get #1, i * 4000 + 1, myfile
       Close #1
       TcpCFile.SendData myfil
     Else
       ReDim myfile(1 To flen) As Byte
       Open CommonDialogC.FileName For Binary As #1
       Get #1, i * 4000 + 1, myfile
       Close #1
       TcpCFile.SendData myfil
      flen = flen - 4000
    End If
 Next i

★问题7:在这个基础上,如何实现语音的实时传输(像电话一样发送端边录边传,接收端边收边放)
   或者简单一点发送端录完就传,接收端收完就放
-----------------------
高手来找茬,高分等你拿~
up
,,
这么多问题??
给你一段代码,功能和你的完全一样。
server端:
drive、dir、command、winsock各一个
winsock  名称:wstcp

Option Explicit

Dim lPos As Long

Private Sub cmdRun_Click()
  If cmdRun.Caption = "Run" Then
    cmdRun.Caption = "Stop"
    wsTCP(0).LocalPort = 1111
    wsTCP(0).Listen
  Else
    wsTCP(0).Close
    cmdRun.Caption = "Run"
  End If
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive & "\"
End Sub

Private Sub wsTCP_Close(Index As Integer)
  Close #1
  Unload wsTCP(1)
End Sub

Private Sub wsTCP_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  Load wsTCP(1)
  wsTCP(1).Accept requestID
  If Dir(Dir1.Path & "\temp") <> "" Then Kill Dir1.Path & "\temp"
  Open Dir1.Path & "\temp" For Binary As 1
  lPos = 1
End Sub

Private Sub wsTCP_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  Dim buffer() As Byte
  wsTCP(1).GetData buffer
  Put #1, lPos, buffer
  lPos = lPos + UBound(buffer) + 1
End Sub
============================================================
client端

Option Explicit

Dim buffer() As Byte
Dim lBytes As Long

Private Sub cmdBrowse_Click()
  dlg.ShowOpen
  txtFile = dlg.FileName
End Sub

Private Sub cmdSend_Click()
  cmdSend.Enabled = False
  lBytes = 0
  ReDim buffer(FileLen(dlg.FileName) - 1)
  Open dlg.FileName For Binary As 1
  Get #1, 1, buffer
  Close #1
  Load wsTCP(1)
  wsTCP(1).RemoteHost = "172.16.1.17"
  wsTCP(1).RemotePort = 8896
  wsTCP(1).Connect
  lblStatus = "Connecting..."
End Sub

Private Sub wsTCP_Close(Index As Integer)
  lblStatus = "Connection closed"
  Unload wsTCP(1)
End Sub

Private Sub wsTCP_Connect(Index As Integer)
  lblStatus = "Connected"
  wsTCP(1).SendData buffer
End Sub

Private Sub wsTCP_SendComplete(Index As Integer)
  lblStatus = "Send complete"
  Unload wsTCP(1)
  cmdSend.Enabled = True
End Sub

Private Sub wsTCP_SendProgress(Index As Integer, ByVal bytesSent As Long, ByVal bytesRemaining As Long)
  lBytes = lBytes + bytesSent
  lblStatus = lBytes & " out of " & UBound(buffer) & " bytes sent"
End Sub
这个代码可以让服务端运行后,客户可以多次传送。
如果要实现类似于聊天的功能,建意先在一新的程序里写,很简单
www.dapha.net上也有很多代码。
谢了!
学习winsock
《原码空间》上有例子

http://www.playicq.com/
传输部分?


俺对语音时实时压缩及解压部分感兴趣!
索尼抛售PC业务:内忧外患导致全面退出 慧正通软技术副总裁:工作流引擎厂商的生存之道 TIOBE 2014年2月编程语言排行榜:VB.NET首次进入TOP 10 斯诺登仅用“网络爬虫”软件获取机密文件 全球开发者:iOS、Android、WP哪个最赚钱? 推荐15款响应式Web设计测试工具 开源世界应该致谢的五家公司 Square、LinkedIn、Google... 高薪利器:四大热门云计算认证推荐 陌生的编程任务,该拿你怎么办? 辟谣:网传Flappy Bird开发者已经自杀 Apple可穿戴倾向健康类,又一个即将被颠覆的行业 传诺基亚月底推Android手机 去除一切谷歌服务 响应式网站与原生移动应用,哪个更适合你的企业? HBuilder:最快的Web开发IDE 成功开发系统集成项目的六大建议 OS X平台上出现窃取比特币的木马 《近匠》第11期:Arrownock——移动社交构建师 面向企业:Google发布iOS版Google Admin应用 Github推出Education平台 师生免费享有微账号 平板的市场依然巨大:应用更丰富,Phablet设备存局限 免费的PCB数据3D转换工具 OBD++ XVL Converter Hadoop Namenode以regular方式启动代码流程分析 走进支撑过8亿用户的Yahoo!数据中心 Napier,一个引领Rackspace14年老兵功成身退 Twitter最新测试版被指仿Facebook的界面设计 成功求职者的自述:如何向应聘企业展示自身价值? 仅用移动开发服务:一分钱不花,开发native应用 苹果员工爆辞职内幕 Windows Phone 8.1被曝光信息汇总 Phaser:开源的HTML5 2D游戏开发框架 HTML5调查:做的好,收入不比iOS差 3个NF 嵌入文件夹窗格怎么使用 创业中的软件公司招人(有兴趣的弟兄进来看看) 数据库中事务的特点及其应用,急,不够再给分500,在线,急。 关于对话框.高分请教 创业中的软件公司招人(有兴趣的弟兄进来看看) 做的网站在IE5.0和IE6.0显示的问题 寻找采用WebSnap 技术的例子? matrxII观后感 关于JSP文件和BEAN的存放 创业中的软件公司招人(有兴趣的弟兄进来看看) c#做的程序可以直接在新安装的win98下(没有.net环境)跑吗?有经验的请留步 c#做的程序可以直接在新安装的win98下(没有.net环境)跑吗?有经验的请留步 存储过程分页有点问题,谁帮我看一下 基础问题!困扰我! 请哥哥姐姐帮忙,把下面的代码转换成VC代码 大家case工具都用到什么程度? 为什么编译的可执行文件在其他计算机无法运行? ACCESS操作问题,高手... 我是刚刚入门,请帮助 怎样把一个已建好的主域服务器更改域名(在线等) 如何得到DataGrid控件里面的某行某列得值? 关于rave报表的问题 weblogic部属程序问题! 组合查询的问题 怎样在改变一个下拉菜单,不刷新页面的情况下,改变另一个菜单的内容??? 有使用BCG库的朋友吗?有些问题不明白,想讨论一下。 sqlmangr.exe文件受到了损坏,应该怎么做恢复[急] 请问,广东的高程报名在什么时候?谢谢! lwangzi(磊子)请关注 win2000下读注册表的怪问题??? 在线等待,急急急 菜鸟百问之一 在VS.NET中无法调试ASP.NET应用程序 从一个表select等好久也没有东西返回,别的表正常,这是为什么呀 大哥大姐: 请问BC与DELPHI有什么区别 ? 问个小问题,权当散分 怎么把终端服务的3389端口号改为自己需要的端口? 怎么样使用实体bean来修改数据库中的记录? 高手请进!!急 如何知道打开子窗体的父窗体是谁 关于XML转换的问题!!请高手进!! *.xfm是什么文件?? 打包难题 help me 来这里问一下, DELPHI与C++ BUILDER 有什么区别 ? 北京时尚-- 海淀vs朝阳 (转) 请问:如何显示通过get来传递过来的带“+”的变量?(显示“+”会丢失) 如何获取指定范围内的随机数,急! 各位GGMM,请多关照新来的MM! applet中的swing可不可以用Look and Feel 请问如何获取字符串里特定字节,马上给分,谢谢, 高分:如何使用将datagrid放在Repeater控件中 转化asp--》asp.net c#版本,有经验借鉴一下么? 六年级部分同学去划船,若每条船上坐5人,有14人没有船可乘,若每条船上坐7人,则有1条船上还可乘4人,六年...六年级部分同学去划船,若每条船上坐5人,有14人没有船可乘,若每条船上坐7人,则有1 如图所示,甲是一个带正电的小物块,乙是一个不带电的绝缘物块,甲、乙叠放在一起静置于粗糙的水平地板上,地板上方空间有水平方向的匀强磁场,现用水平恒力拉乙物块,使甲、乙无相对滑动 1 改为一般疑问句并作否定回答:I can see a cat on the floor.2 You can't play basketball here.改为祈使句.3 Tom can drive the car.(对Tom进行提问) 猜 迷语 趣填成语 125 八分之七 问这个是什么成语?猜 迷语 趣填成语 125八分之七 问这两个是什么成语? a>b>c>1,p=2[(a+b)/2-(ab)^1/2〕,q=3[(a+b+c)/3-(abc)^1/3],比较pq的大小 改为一般疑问句,并作肯定和否定回答.1.I'm helrful! _____________________________________________2.I often read books and wash TV. ________________________________________ 四年级的一些同学去划船,如果每条船坐6人,将有8人不能上船:如果每条船坐8人,会多出一条船.他们租了几条船?一共有几位同学?用方程解,记住,麻烦写清楚点 求 低 字开头的诗句 怎样可以使花瓶里的花开的更久阿?买回家的花插花瓶里第二天就枯萎了,怎么回事呢,在花店都可以开一周左右的.怎样才能开的更久些啊/? 题:六年级部分同学去划船,若每条船上坐5人,有14人没有船可乘,若每条船上坐7人,则有一条船还可乘4人.问:六年级有多少名同学去划船? 求用matlab解复杂方程组的解以下四个方程,需要求,r,ox1,oy1,x11sprt(r^2-(-0.08632-ox1)^2)-oy1=2.872(-0.08632-ox1)/sprt(r^2-(-0.08632-ox1)^2)=-0.009518sprt(r^2-(x11-ox1)^2)-oy1=0.343*(x11-1.236)^2+3.0(x11-ox1)/sprt(r^2-(x11-ox1)^2)=2*0. 花瓶里的花开得真新鲜中的新鲜什么意思 每条船能坐6人,54名同学排好对,按照先后顺序上船:彬彬排在第8个,应坐在第()条船上.强强排在第24个,应坐在第()条船上.军军坐在第6条船上,他排的位置应在第()到()个. Matlab s=solve('x(e^(1/(y*26))-1)=1','x(e^(1.5/(y*26))-1)=80');s.x,s.yError using ==> mupadmexError in MuPAD command:cannot differentiate equation [numeric::fsolve]Error in ==> sym.sym>sym.mupadmexnout at 2018out = mupadmex(fcn,args{:});Error in ==> 子谓韶, 尽美矣,又尽善也. 谓武, 尽美矣,未尽善也. 找成语 子谓韶, 尽美矣,又尽 力的合成中,做出平行四边形后,如何求借合力 求用matlab解以下2元复杂方程组:1987*4*(1-t)*[1/(1-x)+1/x]+[6*(3150-2300)*x+2*(2300-6300)]*t=0-1987*4*(1-t)*[1/((1-x)^2)-1/(x^2))+6*t*(3150-2300)=0满目热泪等高手们赐教 子谓《韶》:“尽美矣,又尽善也.”谓《武》:“尽美矣,未尽善也.”(是什么成语的原型)子谓《韶》:“尽美矣,又尽善也.”谓《武》:“尽美矣,未尽善也.”成语:( )急 平行四边形对角线怎么求知道边长 就是物理中的合力!力是90N 120N 夹角为30度 希望详细一些!最好别用数学符号 有汉字代替一下 电脑上数学符号有些看不懂!如2²平方 用2的平方代替 谢谢! 已知点a(a-1,2a-3)在一次函数y等于x加一的图像上,则实数a等于 “子谓《韶》:‘尽美矣,又尽善也.’谓《武》:‘尽美矣,未尽善也.’” 这句话里有个什么成语 android 开发 Intent的intent.putExtra问题:请问可以把数据传入自己当前所在的Activity中么?代码如下:int id=1;int point=1000;public class MillionaireGame extends Activity{\x05 Intent intent=getIntent();\x05 String ids=intent.getS 阅读《康巴藏族民居》作者按___________的顺序,先介绍了康巴藏族民居的_____;接着介绍了_____;然后介绍了_______;最后介绍了_______.后面的空我大致猜出来了,就第一个空不晓得,一个空给十分啊 子谓《韵》:“尽美矣,又尽善也.”谓《武》:“尽美矣,未尽善也”成语 android intent 与message的关系android 的intent与android message消息处理机制有什么关系和区别么 "雨是最寻常的,一下就是三两天"写出春雨的什么特征? 照样子写出恰当的成语 技术好 技术(百里挑一) 文章好 文笔( ) 态度好 对人( ) 天气好 天空( ) 向量题求解1111 已知I J为互相垂直的向量,a=i-2j b=i+入j 切a与b的夹角为锐角求入取值范围````详细点```谢谢了啊我记得当时老师讲了一个什么A的摸*B得模>0 然后怎么算的``你能从这个角度分析下 形容一个人先自已放弃自已而后被人放弃的成语 口才好的成语是什么?态度好的成语是什么?天气好的成语是什么? 第五个英标是什么? They like P.E.and music.改为否定句 阅读文,往往一排建筑有几十户人家,宛如古代城堡,很是壮观.一幢建筑内的房间大小、结构布局安排得非常合理,很像内地城市建造的多单元式的楼房;不过这儿的名句都带有一个大庭院,院门也 horizontal 在匀强电场中一带正电的小物体沿粗糙绝缘水平板向右运动在匀强电场中一带正电的小物体沿粗糙绝缘水平板向右运动,经过A点时的动能为100 J,到达B点时动能减少了原来的4/5,减少的动能中 雨是最寻常的,一下就是三两天可以用什么四字词语来概括它的特点同志们啊,求你们啦 Do not use internal horizontal or vertical 打一个成语是什么 雨是最寻常的,一下就是两三天,用4字词语概括 根据谜面写成语赤橙绿蓝紫武大郎请客加起来是五句 请问怎么才能提高写作能力 我老师说多看书 但我喜欢的书没有优美的语句 而且别人推荐给我的书我又不喜欢我真的很想写好作文 我用肉眼看日环食了怎么办?好担心眼睛.用眼睛看日环食会有什么症状?我看到的是,像月亮形状的那样。是用手机拍摄的,现在眼睛没什么感觉。就是看网上说用肉眼看不好,不知道会有什 125成语什么意思 山村:写出四个同类的词 为什么 日环食时,肉眼看到的是太阳的光球层 而不是日冕和色球不太懂 记得据说日环食的时候不能用眼睛直接看太阳 要戴眼镜 为什么 Android开发中Intent的具体用法? 写出四个相近的词寒假作业 已经用肉眼观察了日环食怎么办? android 应用开发中的 Activity ,Intent, 写出四个跟“坚韧”同类的词 改为一般疑问句并作否定回答Dave does his homework in the evening 平行四边形有几条对角线? 英语作文football clud35词 一个圆弧,已知其半径,其余两点在同一条直线上 怎么确定这个圆弧 平行四边形两条对角线的平方和=? 一正方形光滑竖直放置的绝缘板边长为L处在竖直向下的匀强磁场和水平向右的匀强电场中磁感应强度大小为B, 知了从生长到食用要多久 OM为角平分线,求证OA/OB=AM/BM 如图甲带正电,乙是不带电的绝缘物块,甲乙叠放在一起、如图3甲带正电,乙是不带电的绝缘物块,甲乙叠放在一起,置于粗糙的水平地板上,地板上方空间有垂直纸面向里的匀强磁场,现用一水平 锥形怎么画 外交部:巴基斯坦的主权和领土完整应当厦门远华“红楼”被辟为职工服务中心英一男子身着纳粹党卫军军装购物 自称安倍明年1月将访非洲三国 日媒称意在辩论失利令其信心受挫 新书披露奥巴马新华国际时评:克里七访中东难抚盟友传承文化 筑梦非洲——访非洲国际艺术采二幼钱新园区大班段举行水墨画展采二幼钱新园区大班段参观消防中队活动市妇保院来钱新园区做卫生工作的考核及报告称超4成海归在京就业 近半数进入安倍2014年1月将访问非洲三国 意叙利亚中部城市发生自杀式炸弹袭击 致数万伊朗抗议者举行“占领美国使馆”集美国大学招生出怪题:是否愿选择外星人美大西洋南岸野生海虾因感染寄生虫数量埃及前总统穆尔西受审 律师相信其将被埃及法院就谋杀示威者罪名对穆尔西进行埃及法院就谋杀示威者罪名对穆尔西进行美国务卿访沙特 称美国与沙特关系必须俄武器出口一半销往亚太 称拟争取非传你以为腻子刮完就好了吗?教您腻子验收中央城市会议时隔37年后重启 A股掘中央城市工作会议37年后重启 A股掘中航工业仲裁败诉 判赔7000万美元长高集团拟20亿元 布局安防等领域警惕!那些滥用股权众筹形式发行“原始理财世界的这十个现实,你不得不接受!为什么特别成功的人喜欢每天都穿一样的保险公司百亿现金哪儿来?揭秘万能险吸达州市纪委:网传渠县县长贪污等问题失印度:“你敢给我买中国枭龙战机试试”攻打也门告急 中东土豪们抢购彩虹4无灾害降临,记录一座城市的表情中央城市工作会议在北京举行竞争加剧 网贷平台弱化P2P业务线上P2P平台为何频频布局线下门店?2016年该如何投资?注意5个市场和8个“笨办法”!让你成为有钱人晚婚假元旦将取消?真相是这样的晚婚晚育假拟取消?考虑过我们的感受吗90后“农二代”,你们有什么理由不去
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘