广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 13015 个阅读者
 
<<   1   2  下页 >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
w791212w
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x4 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[Basic][求助] VB6远端传输如何1对多??
我再作远端传输的程式的时候一直没办 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾中华HiNet | Posted:2008-09-15 20:24 |
三仙 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
头衔:以马内利 以马内利
版主
级别: 版主 该用户目前不上站
版区: 程式设计
推文 x17 鲜花 x370
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用w791212w于2008-09-15 20:24发表的 VB6远端传输如何1对多??:
我再作远端传输的程式的时候一直没办法1台电脑对好几台做传输。
一定要先断开才能继续传下一台的。
请问有办法处理吗??


建议用物件阵列的方式(可以Load 动态产生)
记得 port 不要冲突


挖出答案的难度,取决提问的深度!
献花 x0 回到顶端 [1 楼] From:台湾台北市亚太线上公司 | Posted:2008-09-17 22:23 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

没错!~就三仙大大说的~动态去生成处理连线的物件
比方说你是用Socket去实作连线
就先建一个作监听连线用
一旦有连线进来就LOAD一个新的SOCKET
然后将倾听到的连线转交给新生成的去作处理
然后原来的SOCKET就释放连线继续倾听其他连线

大致上就是

在Form_Load的时候
iWinsocket(0).Protocol = sckTCPProtocol '指定使用TCP协定(比较省事)
iWinsocket(0).LocalPort = 9999 '指定Server的请听Port
iWinsocket(0).Listen

在iWinsock_ConnectionRequest的时候
使用ReDim Preserve 扩大阵列 (Preserve 是可以保留原阵列资料新增扩大的部分)
Load新的iWinsock(counter)
然后iWinsock(counter).Accept requestID '将Listen到的连线转交给其他socket


[ 此文章被overing在2008-09-18 02:27重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x0 回到顶端 [2 楼] From: | Posted:2008-09-18 01:48 |
w791212w
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x4 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用overing于2008-09-18 01:48发表的 :
没错!~就三仙大大说的~动态去生成处理连线的物件
比方说你是用Socket去实作连线
就先建一个作监听连线用
一旦有连线进来就LOAD一个新的SOCKET
然后将倾听到的连线转交给新生成的去作处理
然后原来的SOCKET就释放连线继续倾听其他连线

大致上就是

在Form_Load的时候
iWinsocket(0).Protocol = sckTCPProtocol '指定使用TCP协定(比较省事)
iWinsocket(0).LocalPort = 9999 '指定Server的请听Port
iWinsocket(0).Listen

在iWinsock_ConnectionRequest的时候
使用ReDim Preserve 扩大阵列 (Preserve 是可以保留原阵列资料新增扩大的部分)
Load新的iWinsock(counter)
然后iWinsock(counter).Accept requestID '将Listen到的连线转交给其他socket



那如果别人要连进来呢??


献花 x0 回到顶端 [3 楼] From:台湾中华HiNet | Posted:2008-09-19 20:36 |
三仙 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
头衔:以马内利 以马内利
版主
级别: 版主 该用户目前不上站
版区: 程式设计
推文 x17 鲜花 x370
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用w791212w于2008-09-19 20:36发表的 :
那如果别人要连进来呢??


做法都是一样的

如果要写像msn那种ap
建议写一个server端(db型态)
这样也可以防止nat的问题


挖出答案的难度,取决提问的深度!
献花 x0 回到顶端 [4 楼] From:台湾台北市亚太线上公司 | Posted:2008-09-19 21:13 |
w791212w
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x4 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用三仙于2008-09-19 21:13发表的 :
 

做法都是一样的

如果要写像msn那种ap
建议写一个server端(db型态)
这样也可以防止nat的问题

我是了过后...有一些些小问题...

server端
'---------------------------------------------------------------------------------------------------------
Dim wk(1000) As Integer
Dim win As Integer

Private Sub Form_Load()
win = 0
  Winsock1(win).LocalPort = 1001
 
  Label1.Caption = "已断开连线!"
  Winsock1(win).Listen
End Sub

Private Sub Winsock1_Close(Index As Integer)
Winsock1(Index).Close
Label1.Caption = "已经连线 !"
wk(Index) = 0
Print Index; "   以断线"
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
For i = 0 To win
If wk(i) = 0 Then
  Winsock1(i).Close
  Label1.Caption = "已经连线 !"
  wk(i) = 1
  Print i; "   以连线"
  Winsock1(i).Accept requestID
  win = win + 1
  Load Winsock1(win)
  Winsock1(win).LocalPort = 1001
  Winsock1(win).Listen
End If
Next i
End Sub

Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1(Index).Close
Label1.Caption = "已经连线 !"
wk(Index) = 0
Print Index; "   以断线"
End Sub

'---------------------------------------------------------------------------------------------------------


连结端
'---------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()         '连线
  Winsock1.Close
  Winsock1.RemoteHost = Text1.Text
  Winsock1.RemotePort = 1001
  Label1.Caption = "连线中 ..."
  Winsock1.Connect
End Sub

Private Sub Command2_Click()       '断开
  Winsock1.Close
  Label1.Caption = "已断开连线!"
End Sub

Private Sub Form_Load()
  Winsock1.Close
  Winsock1.RemotePort = 1001
  Label1.Caption = "断开 ..."
  Winsock1.Listen
End Sub

Private Sub Winsock1_Close()
  Winsock1.Close
  Label1.Caption = "已断开连线!"
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
Label1.Caption = "已断开连线!"
End Sub
'---------------------------------------------------------------------------------------------------------


我先按连线(Command1),后按断开(Command2),在按连线(Command1)
红色字那他说地址已用过我该怎么处理@@?


献花 x0 回到顶端 [5 楼] From:台湾中华HiNet | Posted:2008-09-19 21:28 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

Listen的Socket最好固定在一个index(建议啦)
然后连进来之后的要转交给其他port作处理
不然1001已经被先前连进来的占住了当然没办法再Listen
还有就是最好可以在From_Unload那里加个socket.Close
这样表单关掉的时候才能确保port有释放掉


还有就是建议PORT从1024之后开始用吧!~

已知标准PORT
http://www.chu.edu.tw/~chunpo/s...ocs/port.html

尽量避开常用的标准PORT
挑一段空的来用

netstat -ano
指令可以查查现在本机哪些被用了


[ 此文章被overing在2008-09-20 11:44重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x0 回到顶端 [6 楼] From: | Posted:2008-09-20 11:33 |
w791212w
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x4 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用overing于2008-09-20 11:33发表的 :
Listen的Socket最好固定在一个index(建议啦)
然后连进来之后的要转交给其他port作处理
不然1001已经被先前连进来的占住了当然没办法再Listen
还有就是最好可以在From_Unload那里加个socket.Close
这样表单关掉的时候才能确保port有释放掉


还有就是建议PORT从1024之后开始用吧!~

已知标准PORT
http://www.chu.edu.tw/~chunpo/s...ocs/port.html

尽量避开常用的标准PORT
挑一段空的来用

netstat -ano
指令可以查查现在本机哪些被用了


1.所以不同的电脑连进来要用不同的PORT了喔??
  就是说对方使用的都是PORT 1024
  而我这边要都不同是吗??
  每一个人连进来我的PORT都要设定不同吗??(如:第1个为1024.第2为1025.....以此类堆)
2.新增后的Winsock元件不要用的该怎么移除??


献花 x0 回到顶端 [7 楼] From:台湾中华HiNet | Posted:2008-09-20 15:55 |
overing 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用w791212w于2008-09-20 15:55发表的 :
1.所以不同的电脑连进来要用不同的PORT了喔??
  就是说对方使用的都是PORT 1024
  而我这边要都不同是吗??
  每一个人连进来我的PORT都要设定不同吗??(如:第1个为1024.第2为1025.....以此类堆)
2.新增后的Winsock元件不要用的该怎么移除??

1.没错!~ 表情 把port比喻作港口好了
  Server国家要同时跟其他Client国家进行贸易(资料交换)
  Client们只须要用一个自己有空闲的港口即可
  而Server要"同时"跟各国贸易当然要为每一个国家设立一个专属的入港(port)
  除非你不是"同时"要跟各个Client作贸易...

  通常Server国会开设一个固定的"入港申请处" (固定的port)
  这样每个Client国只需要记住入港申请处的port即可
  而不必每次要贸易就须要询问一次Server国家他该从哪个port进入
  当有Client连上入港申请处就会配给一个专属的port(将连线转交给其他socket)
  而入港申请处就继续恢复到等待下个国家的状态

  Java方面的作法是利用ServerSocket.accept()将连线转交给Thread+Socket(Client)的方式
  VB的话应该可以在ConnectionRequest的时候将requestID交给不同的socket(Index).Accept来做...

  如果你不在乎Client每次执行都须要先向Server询问他该从哪个port进入
  或是规划上的Client量本来就不多了
  那么你现在的方式就可以了... 表情



2.没有要用(已经Close)的socket有两种方式处理
* 留着给之后的连线用
* 使用 Unload 将之卸载

  留着的好处是可以让下次不用在建立新的socket
  不过要自己稍微写一下分配socket的演算法

  Unload掉是对资源使用量比较健康(?) 表情
  不过也是得考虑一下index的排列方式
  不然Server开久一点idx一直+++下去也会暴


[ 此文章被overing在2008-09-20 18:07重新编辑 ]


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
献花 x0 回到顶端 [8 楼] From: | Posted:2008-09-20 17:45 |
w791212w
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x4 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我又有1个疑问耶
关于VB6的Winsock元件
好像没装VB6的人打不开内涵Winsock元件的EXE档
请问要怎么处理??


献花 x0 回到顶端 [9 楼] From:台湾中华HiNet | Posted:2008-09-20 20:28 |

<<   1   2  下页 >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.087209 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言