我这里遇到一个比较严重的问题。
我这里使用的是TCP协议。当客户端多次向服务器发送信息后。此信息会自动连接成一个字符串。当服务器接收时,仅接收一串客户端发送的信息,该问题如何解决。如:
A客户端发送的信息:
ClientA.SendData "a"
Doevents
ClientA.SendData "b"
Doevents
ClientA.SendData "c"
Doevents服务器接收信息
Server.GetData temp
这里的 Temp 就等于 abc有人说加了Doevents就没事了。
但我的程序里居然没什么效果。请问怎么会这样呢?
我这里使用的是TCP协议。当客户端多次向服务器发送信息后。此信息会自动连接成一个字符串。当服务器接收时,仅接收一串客户端发送的信息,该问题如何解决。如:
A客户端发送的信息:
ClientA.SendData "a"
Doevents
ClientA.SendData "b"
Doevents
ClientA.SendData "c"
Doevents服务器接收信息
Server.GetData temp
这里的 Temp 就等于 abc有人说加了Doevents就没事了。
但我的程序里居然没什么效果。请问怎么会这样呢?
解决方案 »
- ImageList控件和listview控件加载溢出内存是什么 问题
- 添加数据到数据库中出错!
- 一个VB问题!怎么在VB中设置一个文件的只读属性为不只读?
- 各位,在VB中如何调用WINRAR的rarExt.dll进行压缩和解压缩文件。。。。
- 请问各位怎样使本机器不能上网(意思是我的软件打开,不允许上网,本软件关闭可以上网)最好是能 作到网上连接 ”禁用“我在2000下能实
- 我用ActiveReports2做报表数据出问题!help!!!100分
- 在text 中如何显示0000000~~9999999
- 帮帮忙呀,如何实现:一开机进入windows后,直接进入打包好的vb程序,不用手动点击。
- 不能从excel2003中复制图片到FPSPREAD
- 想用treeview做数据库查询的组合条件输入
- 想跟大家咨询一下:关于网络传输中端口号的作用!
- 添加完记录之后,那三个textbox不更新!
实在不行,就自己给发送的包做个结尾标志,判断有结尾标志就将该代码分开提出来作为一条消息,避免连接
doevents并不可靠。
在SendComplete事件中才确实可以确认前1个已经进行发送,
客户端将肯定分段接收,因此请效仿文件发送形式来进行分段的信息传送,
要不然就用发送1个长字符串给客户端分解。
senddate 后+
doevents
或者
senddate 数据 & "@#$@#$@#%$@#%"
接受时候用
split(数据,"@#$@#$@#%$@#%")进行手动分割
for i = 0 to 3
ClientA.SendData i
Doevents
next i这时服务器收到的是两次信息。分别是
0 和 123也就是说,如果放在循环中 Doevents 仅一次效果。
大侠们,帮帮忙。
.net下我自己写了一套网络开发平台,分为几层:
一层是封装socket类NetWork.dll,主要从事网络连接和网络通讯,并且将服务器封装成了支持多客户的模式。支持TCP和UDP两种
第二层是域控制类Domain.dll,主要功能是可以将几台服务器形成一个协同处理域,提供更多的客户端同时在一个网络环境下操作数据。并提供域内服务器间消息转发功能和服务器负载平衡计算。
第三层就是这里所需要的自定义网络协议层了,在不同的程序下可以自己定义为不同的网络协议格式。不过一般写了一套就不需要重写了,其他程序都可以遵循该协议的。
第四层是逻辑处理层,也就是将接受到的信息经过第三层处理后得到的结果进行不同的处理。
第五层是数据操作层,增加这一层的话可以让服务器对数据库进行操作访问。
并且准备增加消息处理层,将各客户端之间的Message类信息单独用一个层来处理,这样今后写其他程序就不需要在逻辑处理层里增加对Message类的处理了。
以上各层可以任意组合使用形成不同的功能服务器。不同的程序服务器只需要替换逻辑处理层就可以了。
你可以参考一下这样的处理方式,其实自己定制一套网络协议不难,主要就是对字符串或各种进制代码的处理,写一套的话今后就可以在其他地方都用这一套了,属于基础设施,所以不要嫌麻烦:)