| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1252 人关注过本帖
标题:VB关于WINSOCK的问题
只看楼主 加入收藏
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
可能是我说的不详细吧
服务器的winsock有2两个
一个是listener用来侦听
一个是sock()是用来分配给不同用户的。
sock()被我用其他方法限定为最多15个。

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 18:37
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
那这样就很容易分发信息的。另信息只能分发给连接了服务器的客户端,你不可能凭空捏造一个ip来分发。
2014-12-26 18:47
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
我是这个意思——
客户端A登陆后,服务器的本地暂时存储文件内的内容是“Connected”,这时,客户端A制定发送信息XXXX给客户端B,但服务器的Sock.SendData只能给自己连接的IP发送信息,而不能给别的Sock连接的IP发送信息。如果在短时间内改变Sock.RemoteHost的参数确实可以达到发送信息给客户端B,但是此时客户端A被断开,客户端A的程序自动退出登录,我希望能够在不断开连接的情况下发送信息给客户端B,怎么办?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 18:58
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:0 
找到B用户对的sock,然后发给它。不要用A用户这个sock了。

授人于鱼,不如授人于渔
早已停用QQ了
2014-12-26 19:13
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
但是我不知道B用户对应的sock(我的所有sock都是自动分配的)

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2014-12-26 20:41
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
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:0 
这样搜索没多大问题。
ip 可以 直接搜索 RemoteHost 属性的值。转发前判断一下 状态 ,不处于已连接时,不转发。我在手机上,看代码不行。

授人于鱼,不如授人于渔
早已停用QQ了
2014-12-27 11:01
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
快速回复:VB关于WINSOCK的问题
数据加载中...
 
   



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

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