したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

「C#、VB2005 でSocket通信」について

1コーヒーブレイク:2009/02/26(木) 11:06:29
はじめまして、コーヒーブレイクといいます。

VB2005でのSocket通信が理解出来ず、本やらマイクロソフトのマイグレーションTips
やら各HPやらいろいろ見たり自分で試行錯誤したりしたのですが、
いまだ完成しない状態でこちらのサイトを見つけました。

コメントもいっぱい書いていただいているので非常にわかりやすくてほんとうに
ほんとうに助かっています(どこの情報もシングルスレッドでの接続待機で記載
されているものばかりでしたので)。
是非一通り完成させたいと考えているのですが、何点か質問があります。

 質問1.自分でも一からコーディングしつつ勉強もしているのですが、
     ダウンロードさせていただいたそのままのソースでもデバッグを
     実行すると終了出来ていないみたいです。
     うまく終了する手法を教えていただけると助かります。
     ※ちなみにダウンロードしたままの状態でFormClosingの前の
      From名のみ修正しています。

     [手順]
       サーバを選択しStartした後にStopを押して×ボタンを押す。
       あるいはStartした後に×ボタンを押す。


 質問2.最終的には1(サーバ)対n(クライアント)をやりたいと
     思っています。
     どの部分を修正すれば良いでしょうか?


自分なりにやってはみたのですが、完全に手詰まりになってしまった
ので書かせていただきました。
お手数おかけして申し訳ないのですが、回答よろしくお願いいたします。

2igoten:2009/02/26(木) 12:44:25
どうもigotenです。

Server終了の件:
サーバーの終了はStopボタンを押すとCloseServer()メソドが呼ばれて、
更にCloseServer()メソドが呼ばれますが、この中でエラーが発生すると
言うことでしょうか?
もしCloseServer()の中の
server.Close() と
threadServer.Abort() が
正常に行われれば、正常に終了すると思われます。
>実行すると終了出来ていないみたいです。
何故その様に思われるかを教えてください。

1(サーバ)対n(クライアント)の件:
VB6では簡単に出来ましたが、VB2005はかなり難しいプログラムになりそうです。
私もやってみていないので推測ですが、
ServerListen()の中の
server(i) = listener.AcceptTcpClient()
のserverを配列にして、別スレッドで常時ポーリングして
新しい接続要求が来たら新しいserverを作り、
Dim stream(i) As NetworkStream = server.GetStream()
これも新しいstreamを作りポーリングでstreamを読み込む事になると思います。

3コーヒーブレイク:2009/02/26(木) 18:34:06
igotenさん、早速の回答ありがとうございます。

>>実行すると終了出来ていないみたいです。
>何故その様に思われるかを教えてください。
Stopボタンを押した後×ボタンを押した時にVisual Studioの「デバッグの停止」
ボタンが有効になっているからです。
停止同様「すべて中断」も有効なので中断してみるとセカンドスレッド内の
server = listener.AcceptTcpClient()
で止まっているようです。


1(サーバ)対n(クライアント)の件:
  igotenさんがおっしゃっていること頭の中のイメージだけですが、
  理解出来ます。
  理解出来るようになっているだけでも少しは進歩してるのかな?
  とにかく、終了のところがきちんと動作した段階でこの問題について
  igotenさんのアドバイスを元にがんばってみようと思います。

4igoten:2009/02/26(木) 21:17:44
Server終了の件:
よく見ると、listener.Stop()が抜けています。
CloseServer()メソドの先頭に
listener.Stop()
の一行を入れて下さい。
大変失礼しました。

1(サーバ)対n(クライアント)の件:
は非同期で行った方がよいと思われます。
どこかに記述がありましたので、明日までに探しておきます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板