C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: VB.NETでのTCPソケット通信プログラム


(過去ログ 119 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■70061 / inTopicNo.1)  VB.NETでのTCPソケット通信プログラム
  
□投稿者/ TESUO (1回)-(2014/02/22(Sat) 15:21:48)

分類:[VB.NET/VB2005 以降] 

VB.NETでTCPのソケット通信プログラム(サーバ側)を作成しているのですが、クライアント側との通信がうまくいかず困っております。
クライアント側はC++アプリケーションとして完成しており、仕様は以下のようになっています。

<クライアントの仕様>
 ・サーバへの接続要求は初回(1回)のみ(切断されたら再接続要求は行わない)
 ・接続が成功したら、データ(100バイト固定長文字列)を不定期に送信し続ける。


上記の仕様にて、サーバ側で「クライアントからの接続要求が1度だけで、データ受信をイベントに処理を行うプログラム」をVB.NETのTCP通信で実現したいのですが可能なのでしょうか?それとも、クライアントやTCP通信の仕様上、他のやり方が必要なのでしょうか?(例えばUDP通信を使用する等)

現状、サーバ側で初回にデータを受信して画面に表示したら、それ以降データが受信できない状態になってしまいます。(接続が切れてしまうようです)

初歩的な質問ですみませんが、上記処理の実現可否についてお分かりになる方がいればご教授ください。
宜しくお願いします。

引用返信 編集キー/
■70065 / inTopicNo.2)  Re[1]: VB.NETでのTCPソケット通信プログラム
□投稿者/ Azulean (270回)-(2014/02/22(Sat) 20:32:01)
実現は可能かと思いますが、ネットワーク環境、その「不定期」の間隔次第では切断されることもあるでしょう。
たとえば、NAT を使っているような接続経路では、一定時間以上無通信の場合、切断される可能性があります。

1つのセグメントに閉じたネットワークではなく、ルーターなどを経由する通信経路であれば、定期的に ping-pong しておいた方が切断されづらいかと思います。
引用返信 編集キー/
■70066 / inTopicNo.3)  Re[2]: VB.NETでのTCPソケット通信プログラム
□投稿者/ TESUO (2回)-(2014/02/23(Sun) 00:52:26)
No70065 (Azulean さん) に返信
> 実現は可能かと思いますが、ネットワーク環境、その「不定期」の間隔次第では切断されることもあるでしょう。
> たとえば、NAT を使っているような接続経路では、一定時間以上無通信の場合、切断される可能性があります。
>
> 1つのセグメントに閉じたネットワークではなく、ルーターなどを経由する通信経路であれば、定期的に ping-pong しておいた方が切断されづらいかと思います。
回答ありがとうございます。
接続が切断されなければVB.NETで実現は可能とのことですね。

> 実現は可能かと思いますが
まだ試してはいないのですが、実現する場合は、以下のような仕組みで対応できるものでしょうか?
 ・TcpListener、TcpClient、NetworkStreamのインスタンスをクローズしない。
 ・NetworkStreamを永続的に監視する。(クライアントが切断するまでループ処理する)
 ・タイマー処理を使用しない。(⇒タイマーにすると接続が切れてしまう?)

また、クライアントが切断をした時、サーバ側でそのイベントを拾うことはできるのでしょうか?
度々すみませんが回答をお願いいたします。




引用返信 編集キー/
■70067 / inTopicNo.4)  Re[3]: VB.NETでのTCPソケット通信プログラム
□投稿者/ 甕星 (24回)-(2014/02/23(Sun) 04:37:39)
No70066 (TESUO さん) に返信
> まだ試してはいないのですが、実現する場合は、以下のような仕組みで対応できるものでしょうか?
>  ・TcpListener、TcpClient、NetworkStreamのインスタンスをクローズしない。
>  ・NetworkStreamを永続的に監視する。(クライアントが切断するまでループ処理する)
>  ・タイマー処理を使用しない。(⇒タイマーにすると接続が切れてしまう?)

タイマー処理のせいで切断されるって事は無いはず。

> また、クライアントが切断をした時、サーバ側でそのイベントを拾うことはできるのでしょうか?

正常な手順で切断した場合はサーバー側でそのイベントを取得できますが、異常切断した場合はイベントを拾うことが出来ません。
その当りの都合もあるので、定期的に通信を行ない、定期的な通信が一定時間途切れた事を材料として切断したと判断します。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -