| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1252 人关注过本帖
标题:VB关于WINSOCK的问题
取消只看楼主 加入收藏
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
我的意思是:所有的sock都是程序自动分配的,我现在从A用户发来的信息中找到了B用户的IP,要找到和B用户连接的Sock,怎么办?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 21:08
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
另外问一下,winsock.localIP是不是本地的IP?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 21:16
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
请各位看看我这个思路可行么?
服务端在接受连接请求时,将连接的IP存入Tag中。
当客户端要传输信息给另外的用户时,客户端程序在信息前面加上前缀,以告诉服务端该信息的类型和发送目标
服务端分析类型和目标后,用以下代码进行搜索。
程序代码:
Sock(Index).GetData Dx, vbDouble
If Mid(Dx, 1, 3) = "For" Then
MsgTmp = Replace(Dx, "For", "")
UsersWant = InStr(2, MsgTmp, "#")
UsersWant2 = Mid(MsgTmp, 2, UsersWant - 1)
MsgTmp2 = Replace(MsgTmp, "#", "")
On Error Resume Next
back:
If Sock(a).Tag = UsersWant2 Then
Sock(a).SendData MsgTmp2
Else
a = a + 1: GoTo back
End If

各位看看这段代码有漏洞么?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 21:22
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
我刚才进行了一次模拟测试,测试结果是:
客户端的remotehost用服务端得到的localhostname,但是却无法连接上。
出现的结果是:客户端发送的连接请求,服务端收不到。
请教一下:客户端.RemoteHost用服务端的LocalHostName连接的上么?
或者客户端的RemoteHost用服务端的LocalHostIP,这样可行么?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-27 12:17
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
在两台电脑上测试的情况是:
客户端永远连接不上服务端
一台电脑上的情况是:
客户端偶尔连接上服务端,测试共6次,成功连接2次,但是服务端上显示的IP却是2036和4098。
这是什么情况?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-27 12:43
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
刚才测试了一下连接状况
测试 1 次,成功 1 次,但是服务器IP显示是2760
另外,Getdata得到的数据类型是什么?Byte为什么不可以

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-27 13:32
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
连接问题已解决,getdata问题已解决,暂时没有问题了。。。

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-27 13:36
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
有一个新问题:运行时错误,下标越界
 Text2.Text = Replace(Text2.Text, Tg(Index), "")
以上代码出错:下标越界
当中有个Tg()数组,我是这样定义的:
Dim Tg() As String
这样定义是不是有错?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-27 18:12
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
问题已解决,现在有个新问题:
我的sock的localIP都是本地的192.168开头的局域网IP,如何将其改变为外网IP让外网用户也能连进来?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-27 18:18
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
现在有个新问题了。。。
If tcpClient.State <> sckClosed Then
tcpClient.Close
End If
SignUp.RemoteHost = "192.168.1.103"
SignUp.localport = "1011"
SignUp.Connect
到最后一段代码出现:10049错误:本地电脑上的地址不可用。这是怎么回事?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-29 16:13
快速回复:VB关于WINSOCK的问题
数据加载中...
 
   



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

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