VB6 winsockvb6.0第三方控件下载,客户端与服务器连接失败,求高手解答

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
vb利用 WinSock 控件可以与远程计算机建立连接
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口登录CF时为什么会出现“连接服务器失败”?怎么修复这个问题?求高手解答
登录CF时为什么会出现“连接服务器失败”?怎么修复这个问题?求高手解答 20
不区分大小写匿名
你好 我是小波
很高兴为你解答。。你是经常遇到这种问题吗?
你重新下载试试
今天一直这样
楼主您好,重新进游戏并选择其它服务器试试看。
这种情况只是暂时的。网络问题。重启计算机,或者刷新几次。
游戏有点二
相关知识等待您来回答
穿越火线领域专家
& &SOGOU - 京ICP证050897号> 需要远程调用的C/S,我该选用COM+还是WinSock控件?各有什么好处?很惭愧,我对于VB6的
需要远程调用的C/S,我该选用COM+还是WinSock控件?各有什么好处?很惭愧,我对于VB6的
Metras & &
发布时间: & &
浏览:67 & &
回复:1 & &
悬赏:0.0希赛币
需要远程调用的C/S,我该选用COM+还是WinSock控件?各有什么好处?很惭愧,我对于VB6的网络编程不是很了解,难免露怯,希望高手凉解。
我的目的:分为VB6写的客户端和服务器端,客户端的程序访问服务器端的程序(类似执行一个DLL的方法)带入参数。服务器端的程序经过计算,向客户端返回数据(类似向客户端返回DLL的属性)。
开始想的是利用COM+的方法:服务器端程序用VB6的ActiveX & DLL写成dll,注册成COM+应用程序(在“组件服务-计算机-我的电脑-COM+应用程序”中新建一个应用程序)
VB6写的客户端的程序远程访问我服务器上的COM+,执行DLL的方法(有参数),得到DLL的返回属性。
具体做法还没有研究,可能挺复杂的。比如该怎样设定服务器的IP地址,客户端通过什么方式访问远程COM+。
后来发现WinSock控件也可以建立C/S构造的程序,似乎和我的要求也很相似,而且还可以写出类似QQ聊天的程序。
我的理解是用VB6实现COM+,可以写成ActiveX & DLL,在没有被使用时不占用资源,被实例化之后可以进入池子中,降低资源使用,不要求客户端打开某个端口。
而WinSock控件对于连接和端口就很苛刻,而且服务器端的是一个EXE。
我的理解对吗?
请问我该采用哪种方式更可靠?
哪里有全面一些的例程?
非常感谢!
使用COM+可以忽略底层细节,而且比自己写winsock来得可靠。只是COM+通信可能受到防火墙的影响。适合在局域网里应用。wanghenghui & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-求教:用winsock控件,当客户端发送连接请求时,如果服务器端的connectionRequest事件里没有任何代码,客户端是否认为连接成功了?
60taozhiyi]
编辑:www.fx114.net
本篇文章主要介绍了"求教:用winsock控件,当客户端发送连接请求时,如果服务器端的connectionRequest事件里没有任何代码,客户端是否认为连接成功了?
60taozhiyi]",主要涉及到求教:用winsock控件,当客户端发送连接请求时,如果服务器端的connectionRequest事件里没有任何代码,客户端是否认为连接成功了?
60taozhiyi]方面的内容,对于求教:用winsock控件,当客户端发送连接请求时,如果服务器端的connectionRequest事件里没有任何代码,客户端是否认为连接成功了?
60taozhiyi]感兴趣的同学可以参考一下。
客户端向服务器端发送connect请求,而如果服务器端对connectionRequest事件不予响应,即在这个事件过程中没有任何代码,会是一种什么情况呢?
从我写的程序中看是客户端认为连接成功并发送了信息。请问是这样的吗?
另外,客户端发送connect请求,服务器端如果要响应,则先要对相应winsock控件执行close方法,然后使用Accept方法连接,那么使用什么方法表示不接受呢?是不是仅仅采用close方法就表示不接受呢?没有Accpet的话应该是不算连接成功的。
应该算是状态6,连接中。
如果是同一个winsock&accept的话当然要close先啦~因为监听中的socket不能使用accept.
如果不接受就别管这个requestID好了,客户端超时自己判断
或者拿一个新的winsock&accpet了再close,那客户端就不用等超时。仁兄的回复让我想起一个办法,就是做简单的一个服务器端和一个客户端试试,这一试,发现客户端发送connect请求时,无论服务器端对connectionRequest事件是否Accept,都会让客户端产生connect事件,只有从state中查看连接情况了。再继续测试,发现如果服务器端connectionRequest事件中如果有MsgBox这种能暂时停止程序运行的语句,则客户端认为连接上了,客户端winsock控件的state是7;而如果服务器端没有MsgBox语句,也没有Accept的话,则客户端会响应connect事件,但其winsock控件的state是8,为什么会这样,请高手释疑,谢谢。只有Accept以后才是成功,如果这个事件中没写东西&当然是失败了能吃的影子兄,你的意思就是客户端是肯定能响应connect事件了?客户端在连接成功以后才会响应connect事件&,不成功不会响应的
我不知道你要做什么,或者是不知道各个时间的时间,或者是不知道特定的过程怎么处理,你可以直接说你遇到的问题能吃的影子兄,我现在碰到的问题就是对winsock控件一头雾水。所以想理清思路,首先碰到的问题就是,客户端响应connect事件是什么时候——是不是服务器端Accept后呢?如果不是,但在我测试中,服务器端即便不Accept,客户端也响应connect事件,并且客户端的state为7;如果是,那么客户端怎么判断可以开始向服务器端发信息了?谢谢在一般的应用中,服务器的connect事件必须写好了accept才能保证客户端可以连接服务器
客户端在连接完服务器成功了以后才触发客户端的事件
给你个服务器的例子看看吧
Option&Explicit
Private&intMax&As&Long&'winsock最大的下标
Private&Sub&Form_Load()
&&&&intMax&=&0
&&&&Winsock1(0).LocalPort&=&7699&'本地监听的端口
&&&&Winsock1(0).Listen
'*************************************************************************
'**函&数&名:Winsock1_ConnectionRequest
'**输&&&&入:Index(Integer)&&&&&&&&-
'**&&&&&&&&:ByVal&requestID(Long)&-
'**输&&&&出:无
'**功能描述:对方请求连接时候触发,当没有以前已经关闭的控件的winsock控件数组的话就创建
'**全局变量:
'**调用模块:
'**作&&&&者:影子
'**日&&&&期:&08:39:12
'**修&改&人:
'**日&&&&期:
'**版&&&&本:V1.0.0
'*************************************************************************
Private&Sub&Winsock1_ConnectionRequest(Index&As&Integer,&ByVal&requestID&As&Long)
&&&&If&Index&=&0&Then
&&&&&&&&Dim&i&As&Integer
&&&&&&&&Dim&temp&As&Integer
&&&&&&&&temp&=&0
&&&&&&&&For&i&=&1&To&intMax
&&&&&&&&&&&&If&Winsock1(i).State&=&0&Then
&&&&&&&&&&&&&&&&temp&=&i
&&&&&&&&&&&&&&&&Exit&For
&&&&&&&&&&&&End&If
&&&&&&&&Next
&&&&&&&&If&temp&=&0&Then
&&&&&&&&&&&&intMax&=&intMax&+&1
&&&&&&&&&&&&temp&=&intMax
&&&&&&&&End&If
&&&&&&&&Load&Winsock1(temp)
&&&&&&&&Winsock1(temp).LocalPort&=&0
&&&&&&&&Winsock1(temp).Accept&requestID
&&&&End&If
End&Sub客户端Connect&以后有2种处理方法
1.用doevents的循环延时,然后判断winsock的状态&,为7表示连接成功
2。触发Connect事件
这里你可以sendate一下,如果出错了也是连接失败
至于你说的问题我没有遇到请能吃的影子兄看我写的测试代码:
=====&服务器端&======
Private&Sub&Form_Load()
&&&&Winsock1.LocalPort&=&"1888"
&&&&Winsock1.Listen
Private&Sub&Form_Unload(Cancel&As&Integer)
&&&&Winsock1.Close
Private&Sub&Winsock1_ConnectionRequest(ByVal&requestID&As&Long)
&&&&MsgBox&(Winsock1.RemoteHostIP)
&&&&Winsock1.Close
======&客户端&======
Private&Sub&Command1_Click()
&&&&If&Winsock1.State&&&&0&Then
&&&&&&&&Winsock1.Close
&&&&End&If
&&&&MsgBox&(Winsock1.State)
&&&&Winsock1.RemoteHost&=&"127.0.0.1"
&&&&Winsock1.RemotePort&=&"1888"
&&&&Winsock1.Connect
Private&Sub&Winsock1_Connect()
&&&&MsgBox&("已经连接上了")
&&&&MsgBox&(Winsock1.State)
&&&&Winsock1.SendData&"测试连接信息"
Private&Sub&Winsock1_SendComplete()
&&&&MsgBox&("测试信息已经发送完毕")
====================================
除以上代码再没有别的代码了,以上代码分别生成两个程序,点击客户端的Command1按钮时,先后弹出四个信息,内容为:
已经连接上
测试信息已经发送完毕
请兄斧正。'请能吃的影子兄看我写的测试代码:
'=====&服务器端&======
Private&Sub&Form_Load()
&&&&Winsock1.LocalPort&=&"1888"
&&&&Winsock1.Listen
Private&Sub&Form_Unload(Cancel&As&Integer)
&&&&Winsock1.Close
Private&Sub&Winsock1_ConnectionRequest(ByVal&requestID&As&Long)
&&&&Winsock2.Close
&&&&Winsock2.Accept&requestID
'======&客户端&======
Private&Sub&Command1_Click()
&&&&If&Winsock1.State&&&&0&Then
&&&&&&&&Winsock1.Close
&&&&End&If
&&&&MsgBox&(Winsock1.State)
&&&&Winsock1.RemoteHost&=&"127.0.0.1"
&&&&Winsock1.RemotePort&=&"1888"
&&&&Winsock1.Connect
Private&Sub&Winsock1_Connect()
&&&&MsgBox&("已经连接上了")
&&&&MsgBox&(Winsock1.State)
&&&&Winsock1.SendData&"测试连接信息"
Private&Sub&Winsock1_SendComplete()
&&&&MsgBox&("测试信息已经发送完毕")
'====================================
'除以上代码再没有别的代码了,以上代码分别生成两个程序,点击客户端的Command1按钮时,先后弹出四个信息,内容为:
已经连接上
测试信息已经发送完毕
请兄斧正?一开始就用2各控件现在我想的就是用一个控件,为什么会出现不是预期的效果?Private&Sub&Winsock1_ConnectionRequest(ByVal&requestID&As&Long)
&&&&Winsock2.Close
&&&&Winsock2.Accept&requestID
你正常写法不会出错的,你非要错误的来,建议你去搞测试不好意思,我想了解的就是这个地方:
Private&Sub&Winsock1_ConnectionRequest(ByVal&requestID&As&Long)
为什么中间在没有Accept语句的情况下,加上语句:MsgBox(Winsock1.RemoteHostIP),客户端的connect事件就被激活了,state为7?我不知道微软怎么处理的,恐怕是这里面有事件就返回成功把
你把MsgBox(Winsock1.RemoteHostIP)&换成&text1.text="sdfsadfa"看看是不是一样成功现在更奇怪了,服务器端连ConnectionRequest事件的代码我都去掉了,但客户端发送connect请求后,仍然显示state为7,并且发送数据成功:(反正我一直是这么写具体怎么回事不清楚,你问别人把我是不想服务器端接受多个连接,也就是处理完一个连接后,再处理下一个,而且只是两台服务器间的交流。你能否测试一下,看是不是也是我这种情况?那就是2个控件,因为必须有一个控件保持监听状态呵呵,瞧你把影子兄都逼成什么样了。
本文标题:
本页链接:

我要回帖

更多关于 winsock控件 的文章

 

随机推荐