TipsのTCPクライアント・サーバープログラムを作成について
- 題名: TipsのTCPクライアント・サーバープログラムを作成について
- 著者: Tomonori
- 日時: 2004/06/21 15:14:07
- ID: 4506
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: TipsのTCPクライアント・サーバープログラムを作成について
- 著者: 管理人
- URL: http://dobon.net
- 日時: 2004/06/22 2:27:23
- ID: 4510
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: TipsのTCPクライアント・サーバープログラムを作成について
- 著者: Tomonori
- 日時: 2004/06/22 8:46:47
- ID: 4512
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
いつも参考にさせていただいてます。
現在、サンプルにあるようなTCP/IPを使ってサーバー・クライアントのソフトを作成しています。
サンプルについて質問なのですが、受信の際以下のように記述されていますが
以下のようだとデータを受信しない限りReadメソッドでブロックされて先の処理に
進むことができずそこでとまってしまいます。
'クライアントから送られたデータを受信する
Dim ms As New System.IO.MemoryStream
Dim resBytes(256) As Byte
Dim resSize As Integer
Do
'データの一部を受信する
resSize = ns.Read(resBytes, 0, resBytes.Length)
'Readが0を返した時はクライアントが切断したと判断
If resSize = 0 Then
Console.WriteLine("クライアントが切断しました。")
Console.ReadLine()
Return
End If
'受信したデータを蓄積する
ms.Write(resBytes, 0, resSize)
Loop While ns.DataAvailable
また、Readメソッドでブロックされるのを防ぐために、DataAvailableプロパティ
を確認してTrueだったらReadするようにするとクライアントが切断したという確認が
できなくなり困っています。
Do
if ns.DataAvailable then
'データの一部を受信する
resSize = ns.Read(resBytes, 0, resBytes.Length)
'Readが0を返した時はクライアントが切断したと判断
If resSize = 0 Then
Console.WriteLine("クライアントが切断しました。")
Console.ReadLine()
Return
End If
'受信したデータを蓄積する
ms.Write(resBytes, 0, resSize)
End if
Loop
Readメソッドでブロックされることなく、クライアントからの切断も認識できるように
する方法はないのでしょうか?