お世話になります。VBで1対多数の通信プログラムを作っているのですが、受けて側をConnectionRequest
のプロシージャで
If Index = 0 Then
sockNum = sockNum + 1
Load Winsock1(sockNum)
Winsock1(sockNum).LocalPort = 0
Winsock1(sockNum).Accept requestID
としてコントロール配列をさせています。
通信は問題ないのですが、WinsockのIndexがIntegerの上限まできたら、オーバーフローを起こします。
リセット、もしくは回避の方法がまったくわからず困っています。どうぞお力お貸しください。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) INDEX関数とMATCH関数を使用し値を返す数式についてです 2 2022/04/20 13:40
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) エラーの原因が分からない 1 2023/03/21 11:13
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で自分のウインド・ハンド...
-
全てのオブジェクトのプロパテ...
-
カメラスクロールするのを動画...
-
VB6でシリアルポートの制御
-
エクセル・VBA CheckBoxのオブ...
-
EXCELでactivexコントロールを...
-
vb.netで画面のコントロールId...
-
VB2005でZorderを実現させるには
-
ExcelVBAでListViewが使用できない
-
C#で角が丸いテキストボックス
-
コンボボックスの文字によるif...
-
'ckbl' コントロールは作成され...
-
Excelワークシート上のActiveX...
-
チェックボックスをオンにした...
-
間違えて配置してしまったコン...
-
VBのフォーム上にPDF文書を表示...
-
行方不明のボタンを消したい
-
With~EndWithの省略部分と引数...
-
ActiveX コントロールの初期化
-
winndws セキュリティ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
(VBA)スピンボタンの大量...
-
エクセルVBAでオプションボタン...
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
アクセス特有の書き方?
-
間違えて配置してしまったコン...
-
VBAのエラーについて、”実行時...
-
コンボボックスの文字によるif...
-
変数をコントロール型で使用す...
-
chr関数の呼び出しで「プロ...
-
With~EndWithの省略部分と引数...
-
C#で自分のウインド・ハンド...
-
excelのリストボックスで選択し...
-
'ckbl' コントロールは作成され...
-
フォーム上の現在アクティブな...
おすすめ情報