- ベストアンサー
VB6‥ソケットについて
MS-VB6 SP6 を使って作業をしております。 Winsock を使って、複数のユーザー対応のチャットを 作成していまして…複数接続を行うために ソケットを使おうと考えております。 …しかしネットやヘルプで調べましたが、よくわかりません ソケットの作成方法・利用方法や実際のサンプル… などありましたら、教えてください。 また、他にもネットワークを介してのアプリケーション 開発において、アドバイスなどありましたら そちらの方もお願い致します。 P.S. Winsock のプロトコルは、TCPを使用しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>※ヘルプの項目にサンプルがあったのですが・・ 下のような形で記載されておらず、C言語での 説明しか載ってませんでした。(サンプルについて) MSDNの「Winsock (Winsock) コントロールの使い方」 をみていますか?この頁の「TCP 接続の基礎」~ 「2 つ以上の接続要求の受け付け」にサンプルも のっています。 >Private Sub Form_Load() >Winsock1.LocalPort = 0 >Winsock1.Listen >End Sub Winsock1.LocalPort = 0 この部分ですが0ではなく1024以降の番号をお勧めします。 10000番とか・・ 上記のプログラムで一応ソケットの作成は終わってますよ クライアント側のソフトは大丈夫ですか?
その他の回答 (1)
- ykkw_2001
- ベストアンサー率26% (267/1014)
>実際のサンプル ヘルプで「Winsock コントロール」(サンプルも出ています)を見てわからないところを、具体的に書くと、解答しやすいと思います。
補足
ヘルプのサンプルは、この際考えないでください。 ヘルプの内容より、わかりやすいサンプルを 期待してます。 ※ヘルプの項目にサンプルがあったのですが・・ 下のような形で記載されておらず、C言語での 説明しか載ってませんでした。(サンプルについて) 下記が自分が作成しているものの、一文です。 --------------------------- Private Sub Form_Load() Winsock1.LocalPort = 0 Winsock1.Listen End Sub --------------------------- Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) If Winsock1.State <> sckClosed Then Winsock1.Close Winsock2.Close End If Winsock1.Accept requestID End Sub --------------------------- Winsock1.Accept requestID の前後にソケットを 作成とか指定するんだろう・・かな? …としか、わかっていません。 ソケットの作成自体、やり方がわからないので さっぱりです(ー。ー) アドバイス、ありがとうございます(^^)v
補足
はい、確認致しました。 -------- Private Sub Form_Load() Winsock1.LocalPort = 0 Winsock1.Listen End Sub -------- の部分ですが、MS-Visual Basic6.0 での再接続時 ポート番号0 を指定しないと再接続できないそうです。 MS社も認めているエラーだそうです。 回避策として、ポート番号0 を指定する方法が 良いようです。具体的には、ポート番号0 を指定すると 自動的に空いているポートが使用されるようです。 >1024以降 …ウェルノウンポートですよね(確か‥) Windowsがシステムで予約していないポート番号。 再接続時にエラーが引き起こる要因として、一度 使われたポートは一定時間経過しないと再び使えない …というものなので、1024以降も難しいかと(^^; 一応、アドバイス通りトライしてみます。 -------------- MSDNに記載されていました(冷や汗 Winsockの方にソケット生成の方法が記載されているとは 見当違いのほうを検索してました。(^^; (ソケット作成のキーワードで検索してたり・・) 回答してくださって、本当にありがとうございますm(_ _)m