| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3745 人关注过本帖
标题:winsock 控件 TCP 如何使数据立即发送
只看楼主 加入收藏
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
结帖率:78.26%
收藏
已结贴  问题点数:20 回复次数:3 
winsock 控件 TCP 如何使数据立即发送
使用socket进行TCP通讯时,会产生粘包现象。一个主要的原因是发送方采用nagle算法对发送的数据进行了缓冲处理,在VC下可以通过
const char chOpt=1;   
int   nErr=setsockopt(   m_socket,   IPPROTO_TCP,   TCP_NODELAY,   &chOpt,   sizeof(char));   
来达到数据立即发送的目的。
由于项目需要用到VB的winsock控件,因此请教VB下如何实现数据的立即发送?是否有相应的函数。
搜索更多相关主题的帖子: 如何 项目 
2014-08-22 17:12
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
SendData 方法
      

将数据发送给远程计算机。

返回值

Void

语法

object.SendData data

SendData 方法的语法有下面这些部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
data 要发送的数据。对于二进制数据应使用字节数组。


说明

当传进 UNICODE 字符串并在网络上发送出去之前,将转化成 ANSI 字符串。

无知
2014-08-22 18:01
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
如果你数据量不是很大的情况下,
每次发完包,就使用
DoEvents
以确保发送完成。

另外,粘包的处理。TCP粘包是正常的。
封包结构: 封包头,封包数据,封包尾。
收到的数据包,与前一次的留包连接起来,先判断是否有 封包尾, 如果无,向前搜索到 封包尾,剩余部分保存到下一次再处理。

授人于鱼,不如授人于渔
早已停用QQ了
2014-08-22 23:50
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
收藏
得分:0 
回复 3 楼 风吹过 b
多谢。

Figure out what you like. Try to become the best in the world of it.
2014-08-23 08:38
快速回复:winsock 控件 TCP 如何使数据立即发送
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023472 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved