Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
TcpListenerについて
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30317#CommentId83185
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
kiku
 (社会人)
投稿日時
2018/3/13 09:49:27
現在のソースでは、下記のような動作をします。
1.サーバは、AcceptTcpClientメソッドでブロックして接続待機
2.クライアントは、接続要求
3.サーバは、クライアントから接続要求があると、
AcceptTcpClientメソッドが終了する。
4.クライアントは、接続完了を受け取る。
5.クライアントは、データ送信する。
6.サーバは、Sleepでデータ受信するまで待つ。
7.サーバは、ReadBytesで受信データを取得する。
8.サーバは、受信データを出力する。
9.サーバは、whileで処理が戻る。
10.サーバは、AcceptTcpClientメソッドでブロックして接続待機
11.クライアントは、2回目のデータ送信をする。
12.サーバは、接続待ちしているので、AcceptTcpClientで止まっている状態がつづく。
13.サーバは、ClientとNetStream共に破棄していないため、
クライアントからの2回目のデータ送信は受信できているが、
サーバは、その受信データを読みだしていない。
AcceptTcpClientで接続を待つのではなく、
2回目のデータ受信に備えて、
ReadBytesなどを実施する必要があります。
参考になるURLを張っておきます。
http://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleTcpIpSvr.html
ここまでが質問に対する答えになります。
そのほか懸念点。
・サーバは、複数クライアントからの同時接続に対応していない。
※1対1の通信であるならば問題ありません。
・Sleepで待つのは良くないです。
・Client、NetStreamは、disposeをもっているので使わなくなったら破棄しましょう。