找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7040|回复: 7

【求助】老马帮看看这个控件封装问题

[复制链接]

2

主题

14

回帖

0

精华

铜牌会员

积分
196
发表于 2009-9-24 15:44:56 | 显示全部楼层 |阅读模式
<p>数据能回传</p>
<p>但是我想显示出来,该怎么写啊</p>
<p>&nbsp;</p> wmixNxz4.rar (72.11 KB, 下载次数: 16820) <br/>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-9-25 01:02:18 | 显示全部楼层
<p>netClient代码里:</p>
<p>&nbsp;</p>
<p>CopyMemory的声明后面加个事件:</p>
<p>&nbsp;</p>
<p><font face="Verdana">Public Event RsCome(ByRef objRS As Recordset)<br/></font></p>
<p><font face="Verdana">再在<font face="Verdana">tcpClient_DataArrival</font>()事件里面的<font face="Verdana">Debug.Print "收到服务器数据鸟"</font>前加上:</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">RaiseEvent RsCome(Rs)</font></font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">这样的话收到服务器端数据后,就会产生一个事件,在事件的参数里的那个RS对象里的东西就是你要的.</p></font>
我就是嗷嗷叫的老马了......

2

主题

14

回帖

0

精华

铜牌会员

积分
196
 楼主| 发表于 2009-9-25 12:00:26 | 显示全部楼层
<p>老马太谢谢你了</p>
<p>来亲一个</p>
<p>呵呵</p>
<p>问题解决了</p>
<p>新的问题又来了</p>
<p>我发现在数据量很大的时候(5万以上)</p>
<p>多用户同时查询会数据粘连</p>
<p>忒痛苦啊</p>
[此贴子已经被作者于2009-9-25 12:00:39编辑过]

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-9-25 12:40:19 | 显示全部楼层
<p>现在的代码结构肯定会粘连的啊,因为没有做协议进行处理</p>
<p>&nbsp;</p>
<p>需要有个协议,或者至少要有个分割机制,确保两次查询的数据即使粘连了,也能在客户端正确区分开来并分别产生事件进行通知.</p>
<p>&nbsp;</p>
<p>如果是字符串,一般加上个绝对不会出现的字符就行,比如|.</p>
<p>&nbsp;</p>
<p>不过这是字节流,你得加点其它啥分隔标记......</p>
我就是嗷嗷叫的老马了......

2

主题

14

回帖

0

精华

铜牌会员

积分
196
 楼主| 发表于 2009-9-26 16:13:15 | 显示全部楼层
<p>马哥</p>
<p>情况是这样的</p>
<p>A B C D4个客户端依次(间隔约1.5秒)向服务端发送命令</p>
<p>本来63000多条数据10秒左右就返回客户端了,但是现在是D最先收到,其他B,C先后都收到数据,A到最后都收不到数据,我都不知道怎么改了。</p>
<p>我在BaiDu里Google了好久,又到Google里BaiDu,哎都没找到答案[em53]</p>
<p>所以就又到你这里来了(另外透露,我是菜鸟)</p>
<p>&nbsp;</p>
<p>我想做个类似<font face="Verdana"><a href="http://www.vbgood.com/viewthread.php?tid=79173">http://www.vbgood.com/viewthread.php?tid=79173</a>上说的那个netdata_server.ocx控件,那个有后门</font></p>
[此贴子已经被作者于2009-9-26 16:23:59编辑过]

2

主题

14

回帖

0

精华

铜牌会员

积分
196
 楼主| 发表于 2009-9-27 14:21:18 | 显示全部楼层
马哥救火!!!!!!!!!

2

主题

14

回帖

0

精华

铜牌会员

积分
196
 楼主| 发表于 2009-9-29 17:59:22 | 显示全部楼层
<p>马哥 这几天我对我的代码反复调试,我发现不会出现粘包,4个客户端对应数据库4个表(每个表有36000以上的数据)</p>
<p>有3个客户端完整且正确收到数据,就一个收不到。不知道是什么原因?????这两天研究了你的那个多线程下载的例子,收获很多.突然让我想到会不会是线程不够,请马哥指点迷津........................</p>
<p>另外按你那个例子的方法能封到OCX里吗</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-10-12 20:56:22 | 显示全部楼层
你这个……咋说呢,多线程应该不是解决的根本之道,而是服务器端没有考虑好。
WINSOCK控件本身好象是内部多线程的,但是在事件到来让你的代码处理时,还是顺序执行的,因此如果有挂起,则有可能会影响别的过程。
我觉得你先将问题的方向搞清楚再说后话比较好。
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表