• ベストアンサー

VB6‥ソケットについて

MS-VB6 SP6 を使って作業をしております。 Winsock を使って、複数のユーザー対応のチャットを 作成していまして…複数接続を行うために ソケットを使おうと考えております。 …しかしネットやヘルプで調べましたが、よくわかりません ソケットの作成方法・利用方法や実際のサンプル… などありましたら、教えてください。 また、他にもネットワークを介してのアプリケーション 開発において、アドバイスなどありましたら そちらの方もお願い致します。 P.S.  Winsock のプロトコルは、TCPを使用しています。

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

  • ベストアンサー
  • momoturbo
  • ベストアンサー率55% (49/88)
回答No.2

>※ヘルプの項目にサンプルがあったのですが・・  下のような形で記載されておらず、C言語での  説明しか載ってませんでした。(サンプルについて)  MSDNの「Winsock (Winsock) コントロールの使い方」 をみていますか?この頁の「TCP 接続の基礎」~ 「2 つ以上の接続要求の受け付け」にサンプルも のっています。 >Private Sub Form_Load() >Winsock1.LocalPort = 0 >Winsock1.Listen >End Sub Winsock1.LocalPort = 0 この部分ですが0ではなく1024以降の番号をお勧めします。 10000番とか・・ 上記のプログラムで一応ソケットの作成は終わってますよ クライアント側のソフトは大丈夫ですか?

haibara
質問者

補足

はい、確認致しました。 -------- 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

その他の回答 (1)

  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.1

>実際のサンプル ヘルプで「Winsock コントロール」(サンプルも出ています)を見てわからないところを、具体的に書くと、解答しやすいと思います。

haibara
質問者

補足

ヘルプのサンプルは、この際考えないでください。 ヘルプの内容より、わかりやすいサンプルを 期待してます。 ※ヘルプの項目にサンプルがあったのですが・・  下のような形で記載されておらず、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

関連するQ&A

  • UDP/IPでのソケット作成について(winsock)

    UDP/IPでのソケット作成について(winsock) 開発環境VC++.NET、O/S WIN2000にてソケットプログラミング(winsock2.0)をしています。 コンソールプログラミングではありませんが、WindProcは持っていません。 UDPサーバーを作り、複数クライアントの対応をしたいと考えています。 クライアントAからの通信やりとり中に クライアントBからの通信がきたら、そちらとも通信やりとりを(自動で)行いたい。 ここで問題なのが、クライアントAの要求ポートが15000で、 クライアントBの要求ポートも15000なのです。 同じ既に開いているポートでソケット作成しようとしても、socket()関数はエラーを返してくるのですが、 やり方を工夫すれば、同一ポートでの複数クライアント対応は可能なのでしょうか。不可能なのでしょうか。 可能であれば、やり方、ヒント等教えてください。よろしくお願いします。 追記 (1)TCP/IPでは、同一ポートでソケット作成が可能でした。ネットで探したサンプルプログラムが  そのような動きをしていたのですが、UDPに書換えることはできませんでした。  http://eternalwindows.jp/network/winsock/winsock04s.html (2)UNIXの場合fork()処理後に socket()作成 → bind()で同一ポートでの複数クライアント対応が  上手くいくらしいのですが、Windowsではマルチスレッド等をうまく活用すれば、  fork()と同様の処理が可能になり、目的が達成できるでしょうか。

  • VBのソケット通信(winsock)のサイト

    VBでwinsockコントロールを使ってソケット通信にて、データの送受信をするプログラミングをするのですが、サンプルコードなどが載っているサイト、わかりやすく説明してあるサイトがありましたら教えてください。

  • VB2008でネットワーク通信

    VB2008でネットワーク通信 今VB2008を使ってゲームを作ってます。 そこでPC同士をつないで対戦するようにしたいのですが 調べてみるとTCP/IPやWinsockなどが出てきました それがVB6.0のだったり、コードを入れてもうまくいきませんでした。 ちなみにゲームは五目並べで、チャット機能も入れたいと思っています。 ご教授お願いします。

  • ソケットインタフェースに関して

    クライアント/サーバ間でTCP/IPソケットのプロトコルを使用してネットワークを構築しようとしています。 TCP/IPソケットで、最初のクライアントAからconnectされた状態でクライアントBから同一ポートにconnectされた場合、クライアントBからのconnectを有効にしたいと考えています。本場合、他のクライアントからconnectされたことがTCP/IP層で検知可能でしょうか?また、アプリケーション層での作りは、どのようにすればよいか知っている方教えて下さい。

  • ソケットで通信できない

    Solaris + C で作成したプログラムAと、 PC上のVBで作成されたアプリBとの通信を行おうとしていま。 PC側のVBで、 Winsock.LocalPort = 3000 Winsock.Listen の処理があります。 Aではソケットの生成(socket)→接続(connest)→書込み(write)を行っていますが、すべて成功している模様です。 ・・が、VB側のWinsock_DataArrivaでブレークしていても、一向に受信する気配がありません。 VB及びソケットに関して、ほとんど知識がないので上記処理であっているかも分かっていません。 解決策をご存知の方がおられましたら、ご教授願いたく。

  • VB.NETによるTCP通信プログラムについて

    VB.NETによるTCP通信プログラムについて VB.NETによりTCP通信プログラムを開発しようと思っておりますが、TCP通信はクライアントとサーバーに機能が分かれると思いますが、一つのアプリケーションでサーバー機能とクライアント機能を有するアプリケーションは開発が可能でしょうか? サンプルプログラムを探しているのですが、どれも、クライアントとサーバーのどちらかの機能だけですが、両機能を持ち合わせたサンプルを掲載されているサイトをご存じの方は、お手数ですが、教えて頂けると助かります。 ご教授のほど、よろしくお願い致します。 Windows XP SP3 Visual Studio 2008 Visual Basic

  • VBとC#の違いって何?

    Visual Basic 2008 Express EditionとVisual C# 2008の違いって、 何ですか? MS社の記述では、 [VB] Windows アプリケーションの楽しく簡単な作成方法に興味を持つ、 趣味で開発を行うユーザー、プログラミング初心者、および学生に 最適な開発ツールです。 [C#] ダイナミックなアプリケーションを開発するための、 シンプルで楽しく、学びやすい開発ツールです。 .NET Framework 上で Windows 用アプリケーションを開発するときや、 オブジェクト指向を学ぶときに最適です。 と書かれているのですが、 機能数、不具合数はどっちが多いのでしょうか? VB,C#も同じ様なダイナミックアプリケーションを開発でき、 シンプルなのですが・・・。未だ区別が付きません。 C#の場合、フォーム等の詳細設定は出来ますが、 VBでは簡易設定のみ。 ソフトウェア開発をする場合、どっちが得をするのか? ↑の回答をお待ちしてます。

  • VB(Winsock)で。。。

    VB6.0を使っての開発です。 うまく説明できませんが、Winsockを使用して、複数のコネクトでデータの送受信を行おうと思っています。 その場合、サーバー側に時間のかかるデータ処理を要求したら、別のコネクトからの処理要求があった場合、両方の処理を同時(平行して)行えますか? 現在は、要求があるごとにWinsockのインデックス値を加算して処理をしていますが、コントロールを複数貼り付けて作成しないといけませんでしょうか? 説明下手でもうしわけありませんが、よろしくお願いします。

  • VB(Windows)からUNIXマシンのプログラムを起動?

    ソケット通信のアプリを作りたいのですが、よろしかったらご指導ください。 VB(Windows)からUNIXマシンのプログラムを起動するにはどうすれば良いのでしょうか。 WinSockを使ったサンプルソースが見れるサイトを知っていたら教えてください。 また良い書籍などあれば教えてください。

  • WinSock32のTCP通信において、recvする前にどれだけの量がソケットにたまっているか調べる方法ってありますか?

    タイトルのとおりなのですが、 WinSock32のTCP通信において、recvする前にどれだけの量がソケットにたまっているかを調べたいのですが、方法が見つかりません。 WinSock32の関数に用意されているのでしょうか? 関数名だけでもいいので教えていただけると助かります。 よろしくお願いいたします

専門家に質問してみよう