廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 13016 個閱讀者
 
<<   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.061465 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言