CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  网络编程

用winsock发送较大的字符串时是不是容易丢包?

楼主dyhgoa(羚羊)2004-11-01 16:58:47 在 VB / 网络编程 提问

用winsock发送较大的字符串时是不是容易丢包?  
  我一次发送8100个字节的字符时,对方只收了一半。不知是何原因? 问题点数:20、回复次数:17Top

1 楼scottzy()回复于 2004-11-01 17:06:56 得分 0

winsock发送字符串有大小限制,你最好在每次发的字符串头尾加标记和长度来判别,建议循环发送Top

2 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-01 17:09:50 得分 0

你用的是udp协议吧,最好udp要少于4k要不容易丢包  
  udp不管多大都容易丢包的Top

3 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-01 17:10:28 得分 0

建议重要的数据用tcp协议  
  要不就拆包,和加包头Top

4 楼dyhgoa(羚羊)回复于 2004-11-02 08:13:57 得分 0

我用的TCP协议啊?Top

5 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-02 08:33:34 得分 0

tcp就肯定没问题,是你处理的问题,贴代码Top

6 楼jonahclinton(克林顿)回复于 2004-11-02 08:39:29 得分 0

关注中……Top

7 楼blackbug119(黑虫子)回复于 2004-11-02 08:48:32 得分 0

用BTYE来传,每次8字位,写WHILE,用TCPTop

8 楼dyhgoa(羚羊)回复于 2004-11-02 13:35:49 得分 0

我是要发送richtext的textrtf码?  
  const   SendByte=8100  
  lngSize   =   Len(txtMessage.TextRTF)  
                  lngZsize   =   Len(txtMessage.TextRTF)  
                  t   =   0  
                  Do  
                          If   lngSize   <   SendByte   Then  
                                intSize   =   lngSize  
                          Else  
                                intSize   =   SendByte  
                          End   If  
                          btData   =   Mid(txtMessage.TextRTF,   t   *   SendByte   +   1,   intSize)  
                          wskClinet.SendData   "32,2,"   &   btData  
                        lngSize   =   lngSize   -   intSize  
                        t   =   t   +   1  
                  Loop   Until   lngSize   =   0  
   
  我发发送16100字节,对方只能收到11000字节,如果本机上传就OK。Top

9 楼Surpass((本账户已更换主人))回复于 2004-11-02 14:00:59 得分 5

http://www.dot618.net/  
   
  有我写的源码Top

10 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-02 14:49:24 得分 10

wskClinet.SendData   "32,2,"   &   btData  
  '这里+  
  doeventsTop

11 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-02 14:51:24 得分 0

这快代码要不是doevents的事,你就给我发消息,在贴全点代码,我给你看看Top

12 楼baoaya(点头)(大风起兮云飞扬)回复于 2004-11-02 17:10:56 得分 5

tcp   不可能掉包的  
  也许你数据太大了   建议一次传送1.4k   ,因为在2台主机   传输数据的时候   由于网络的原因   你一次发送的数据再大,其实每次也只发送了1.4k   左右(主要看网络情况   局域网可能还要大)   所以在接收端会发送分包现象,反之,如果一次传送的数据太少的话   就发生粘包现象Top

13 楼dyhgoa(羚羊)回复于 2004-11-03 09:28:56 得分 0

不是doevents的事,就是发送端OK的,接送端出现分包现象,我改成4K,还不行,试试楼上朋友1.4K吧。Top

14 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-03 09:32:30 得分 0

看看我写的udp的方法  
  http://community.csdn.net/Expert/topic/3515/3515059.xml?temp=.4931909Top

15 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-11-03 09:32:58 得分 0

别的不可能肯定是你处理的问题了Top

16 楼hedane(有球必应)回复于 2004-11-03 09:35:20 得分 0

分包就分包吧,接收事件里做好包的合并处理就行了,躲是躲不掉的。Top

17 楼dyhgoa(羚羊)回复于 2004-11-03 10:46:18 得分 0

我改成1K发送就OK了。Top

相关问题

  • winsock发送字符串问题再求解
  • 字符串发送问题
  • 各位大爷,为什么我用winsock发送字符串,发出和接收到的长度比我的字符串长,多出来的是乱码??
  • 发送字符串消息问题!
  • socket发送字符串问题
  • 用Winsock控件发送字符串的时候,每次发送的数据量是有限制的么?
  • winsock传送字符串的问题
  • Winsock控件,tcpip协议,如何使用senddata方法连续发送两个字符串?
  • winsock 控件SendData方法发送字符串长度有什么限制阿---在线等待
  • 通过COM口往设备发送字符串时如何能把超长字符串分成短字符串送入?

关键词

  • winsock
  • 协议
  • tcp
  • 字符串
  • textrtf
  • 容易丢包
  • lngsize
  • 发送
  • txtmessage
  • winsock发送较大

得分解答快速导航

  • 帖主:dyhgoa
  • Surpass
  • zyg0
  • baoaya

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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