• 締切済み

VB(Winsock)で。。。

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

みんなの回答

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

http://oshiete1.goo.ne.jp/kotaeru.php3?q=155606 文字列しか送受信しておりませんが、データ転送でも同様の手法で実現可能です。 クラスが使えるのであれば、処理ロジックをそちらに書いて、擬似マルチセッション化が可能かもしれません。 (VBのマルチセッションがどこまでできるか知らないので、無責任発言)

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=155606

関連するQ&A

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

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

  • WinSock API

    IP変換器を使用してRS-232C → 変換器 → PC を1本のLAN上で行う処理を考えています。 しかし、VBも通信もまったくの初心者でなにから手をつけてよいのかがわかりません。ご指導お願いします。 1.APIを使用してのPG作成  WinSock APIは WinSockコントロールとの違いは何でしょうか?  またWinSock APIを使用する場合、VBへの組み込み方法を教えてください。

  • winsock 送受信

    VB6を使っていますが、詳しくないので質問させていただきます。 とりあえず同じPCでwinsockを用いてサーバとクライアントを接続させてデータを送受信するプログラムをつくっています。 データの送受信senddataとDataArrivalのところで悩んでいるのですが、senddataを数箇所用いていて、送ったデータは GetData 変数 により全て同じ変数にされてしまいます。 サーバでtemp=10とi=1のデータを送ると、クライアントでもそのtemp=10とi=1のデータ両方が使いたいわけですが、どうすればいいでしょうか?

  • ExcelVBAでのwinsockの利用

    だいぶ以前に、VB6を使ってマニュアル片手にtcpやudpによるLAN内での双方向データ転送(チャットごっこ)ができるものを作った経験があります。 最近、Excel2010のVBAを使って当時のようなものを作ってみたいと考え、CQ出版の「VBAによるTCP/IPプログラミング入門」を購入しました。読んだ限りではなんとかなりそうに思ったのですが、その中で、「Winsockコントロールはプログラム開発し配布するためにはそのライセンスが必要でライセンスなしではWinsockコントロールを配置してダイアログを作成できない」という記述がありました。つまりはVB6などのライセンスがある環境でないと作り始めることができないようです。 幸いVB6はうちの古いパソコンに入っていますから、そちらに入っているExcelでWinsockコントロールを配置しただけのVBAファイルを作り、今のExcel2010に持って来て修正していくのであれば作業は可能らしいのですが、いずれは破棄するであろうパソコンに依存しないといけないという流れがしっくり来ません。 また、VB6を今の環境に移せば解決する話だとも思いますが、今後VBAは使ってもVB6を使うことはないだろうということと、容量等の事情から、できればこちらに入れるようなことはしたくありません。 必要に迫られてもいなく少々わがままな事情も合わせての話ですが、何か解決方法がありましたら提案・指摘などをお願いいたします。

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

    お世話になります。VBで1対多数の通信プログラムを作っているのですが、受けて側をConnectionRequest のプロシージャで If Index = 0 Then sockNum = sockNum + 1 Load Winsock1(sockNum) Winsock1(sockNum).LocalPort = 0 Winsock1(sockNum).Accept requestID としてコントロール配列をさせています。 通信は問題ないのですが、WinsockのIndexがIntegerの上限まできたら、オーバーフローを起こします。 リセット、もしくは回避の方法がまったくわからず困っています。どうぞお力お貸しください。

  • Winsock 受信について

    Winsockをサーバとクライアントで動かして送受信についてです。 サーバでSendDataで送信、クライアントでGetDataの所です。 サーバーでSendDataを数回送信するとクライアントのGetDataではある程度まとめて受信します。 (1)サーバ側で送信    Winsock.SendData "aaaaa"    Winsock.SendData "bbbbb"    Winsock.SendData "ccccc"    Winsock.SendData "ddddd" (2)クライアントで受信    Winsock.GetData xyz (1)のように送信した場合、(2)のxyzは    ・aaaaabbbbbcc    ・cccddddd のように数回に分けて受信されます。 希望としましては、1データ送信に対して1データ受信が望ましいのですが。 実際のデータには全角はある為、このような希望となりました。 もしかして、不可能なのでしょうか。 わかる方、教えて下さい。

  • 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()と同様の処理が可能になり、目的が達成できるでしょうか。

  • VB6‥ソケットについて

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

  • winsock通信時エラーの回避

    winsock通信でデータをクライアント側からサーバー側に送り、一定の条件でサーバー側からクライアント側にデータを戻すソフトを作成中なのですが、サーバー側が通信エラーの為か止まってしまいます。 サーバー側(winsock部分)記述 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 '接続を閉じる Do While Not (Winsock1(Index).State = sckClosed) DoEvents Loop On Error Resume Next Winsock1(Index).Listen If Winsock1(Index).LocalPort <> 0 Then Winsock1(Index).LocalPort = 0 End If End Sub 質問の整理ですが、 表示板にはギミックが付いておりそのギミックは止まらないのでパソコンのフリーズでは無い様子です。 で問題は通信部分だと推測されるのですが、そのエラーを起こした通信を破棄してもいいので、サーバー側の点数加算を止めない方法はありませんでしょうか。 また上記のWinsock1_Errorコードの記述じゃおかしいのでしょうか。

  • WinSock プロトコルスタックバッファについて

    開発環境 XP、VC2005、C/C++、WinSock WinSockでネットワークプログラミングをしています。 例えば、下記のようなコードでデータを送信するとします。 int send_byte = send(socket, buf, byte, 0) このとき、変数byteには1024が入っているとします。 上記のコードをループさせてデータを送信すると、 しばらくsend_byteには byteと同じ値1024が入っています。 でも、プロトコルスタックバッファが満杯になり、 send()が処理しきれなくなった場合に、 byteは1024なのに、send_byteが例えば500などになります。 つまり、中途半端に送信してしまいますよね。 これはWinSockの仕様だと思いますが、 できれば中途半端には送信したくないのです。 このように中途半端に送信しない方法はあるでしょうか? send()するまえにプロトコルスタックバッファの空きが調べられれば なんとかできそうな気もするのですが・・・。 よろしくおねがいします。

専門家に質問してみよう