标题:VB关于WINSOCK的问题
只看楼主
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
结帖率:92.31%
已结贴  问题点数:20 回复次数:28 
VB关于WINSOCK的问题
程序代码:
On Error GoTo sss
ttt:
tcpServer.LocalPort = 1999
tcpServer.Listen
tcpServer.RemoteHost = "120.204.4.248"
tcpServer.Connect
DoEvents
Sleep 30000
tcpServer.SendData (tcpServer.LocalIP)
Exit Sub
sss:
GoTo ttt

运行到黄色那一段就会出现40020错误
5分钟前运行一切正常。
现在突然无法正常运作了。
求教这是哪里出错了?
搜索更多相关主题的帖子: 黄色 
2014-12-25 20:41
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
得分:0 
tcpServer.LocalPort = 1999

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-25 20:42
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
得分:0 
tcpServer.LocalPort = 1999
这段代码出错(前面没显示出来...)

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-25 20:42
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
On Error GoTo sss
ttt:
tcpServer.LocalPort = 1999
tcpServer.Listen
tcpServer.RemoteHost = "120.204.4.248"
tcpServer.Connect
DoEvents
Sleep 30000
tcpServer.SendData (tcpServer.LocalIP)
Exit Sub
sss:
tcpServer.close    '出错后关闭连接试试
GoTo ttt
2014-12-25 22:08
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
得分:0 
楼上的方法使用后,原来出错的代码不错了,但是...
tcpServer.RemoteHost = "120.204.4.248"这段代码出错了...

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 12:21
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
tcpServer.LocalPort = 1999                       设置本地端口
tcpServer.Listen                                 进入侦听
tcpServer.RemoteHost = "120.204.4.248"           设置远程地址      ,无远程端口
tcpServer.Connect                                连接远程
DoEvents

其中:侦听,要求连接状态为2,并且本地端口未使用,会置状态 2 ;然后发起连接,要求连接状态0 ,然置连接状态为 6 ,然后连接成功后置 7 ,连接错误置8,远程关闭置 9
这二个动作是矛盾的。一个 winsock 不能同时进行二个相同或不同的动作,动作包括(侦听,连接)

如果是服务器端,那就只要侦听好啦。
如果是客户端,那就可以 连接远程好啦。

如果又是服务端,又是客户端,那就需要二个以上的 winsock 控件。
侦听单独一个,同意连接使用需要一组。
自己连接远程的,有几个地址需要同时连接,就需要几个。

授人于鱼,不如授人于渔
早已停用QQ了
2014-12-26 12:30
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
得分:0 
我把代码大改了一下,现在要求是:
客户端和服务端分离
客户端有两个form,第一个form是登陆,其中登陆时发送一个连接请求给服务器,服务器自动分发一个sock给客户端,客户端连接上服务端,客户端发送用户名及密码给服务端,服务端检查用户名及密码是否正确,若正确则传输data告诉客户端密码正确,客户端接收后关闭form1,关闭连接
form2启动,form1关闭前在外部存储一个临时文件,里面包括用户名及密码供form2调用,form2调用完毕后删除,并且重新连接。但是此时有个问题:
服务端重新连接上时,会自动跳转入登陆模块,导致客户端即使连接上服务端,也无法发送信息给服务端让服务端转送给另外的客户端,因为服务端在没有登录的情况下会丢弃所有不是登录请求的信息。
是否可以让form1关闭,form2打开时,不关闭连接呢?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 17:37
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
得分:0 
连接问题已解决,用的是服务器本地存储外部文件。
但是现在有个新问题:
一个用户(客户端)发送了一段信息来,客户端自动加上声明,服务端接受到了信息,分析信息种类,得出“该信息是要转发”的结论。此时,服务端将接受到的信息按照客户端制定的目标用户,搜索该用户所对应的IP,并且向该IP发送信息。
但是,问题是sock无法指定要发送的IP,只能固定的向一个IP发送信息,怎么办?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 17:59
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
想用vb做聊天软件?用tcp连接不是这么做的,服务器要用控件数组,否则一旦连接一个客户后,服务器端就从侦听状态变为连接状态了,没有tcp侦听,后续的就无法再连接服务器。用udp很容易做个多用户聊天软件的。
2014-12-26 18:31
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
得分:0 
我是控件数组

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 18:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440372-1-1.html




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

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