• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:winsockの配列(1対多数のプログラム))

Winsockの配列(1対多数のプログラム)

このQ&Aのポイント
  • VBAで1対多数の通信プログラムを作成していますが、WinsockのIndexが制限に達するとオーバーフローが発生します。解決方法を教えてください。
  • VBAで1対多数の通信プログラムを作成していますが、WinsockのIndexが上限に達すると問題が発生します。どうすれば解決できるでしょうか?
  • VBAで1対多数の通信プログラムを作成中ですが、WinsockのIndexがIntegerの上限まできたらオーバーフローが発生します。対策方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 VBのWinSockコントロールは色んな所にサンプルあるけど、みんなこのタイプよね。たしかMSDNのもこれ。まぁサンプルなのでしかたないとしても、実際に利用する場合は1番以上の番号を再利用する形にしてあげないといけない。  激簡単なサンプルを書いてみたので参考にして欲しい(今ささっと書いた奴なので動かなければ修正よろしく)。Form1にWinSock1を置いて実行してね。 Option Explicit Private sockNum As Integer Private closedSocks As Collection Private Sub Form_Load() Set closedSocks = New Collection Winsock1.Item(0).Bind 9900 Winsock1.Item(0).Listen End Sub Private Sub Winsock1_Close(Index As Integer) Unload Winsock1(Index) closedSocks.Add Index End Sub Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long) If Index = 0 Then Dim connectsocknum As Integer If closedSocks.Count > 0 Then connectsocknum = closedSocks.Item(1) closedSocks.Remove 1 Else sockNum = sockNum + 1 connectsocknum = sockNum End If Load Winsock1(connectsocknum) Winsock1.Item(connectsocknum).Accept requestID End If End Sub Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim data As Variant Winsock1.Item(Index).GetData data Winsock1.Item(Index).SendData data End Sub

mado2000
質問者

補足

返事遅くなって申し訳ありません。サンプルありがとうございます。早速試してみます。