Windowsデスクトップで実行され、.netで開発されたサーバーソフトウェアがあり、TCP/IPを介したソケットでの着信接続を常にリッスンしています。
次に、コンパクト フレームワーク 3.5 で開発された CE 6.0 でクライアント ソフトウェアを実行しています...このクライアントは次のことを行う必要があります。
- サービスが有効なときにサーバーに接続する
- 300 ミリ秒ごとに数バイトのデータを送信する
- 送信中にハングアップしたり、毎回接続する時間を失ったりすることはありません
- ソケットが接続されているかどうかを確認する
これまでのところ、このサンプルに基づいて非同期コードを使用してサーバー側を実装しましたが、サーバーが閉じるまで接続を維持するように変更しました... 1回だけでなく、完全に機能しています
http://msdn.microsoft.com/en-us/library/fx6588te.aspx
次に、クライアント側を次のように実装しました。
dim clientSocket as new System.Net.Sockets.TcpClient()
/... code .../
'Activate the service
clientSocket.Connect("10.0.0.34", myPort)
/ .... code ..../
'Data send function
dim serverStream as NetworkStream = clientSocket.GetStream()
dim outStream as byte() = System.Text.Enconding.ASCII.GetBytes("My messagge...")
serverStream.Write(outStream, 0, outStream.Length)
serverStream.Flush
また、これは完全に機能しています。私が必要なものは何?
- データを送信する前にソケットとの接続が開いているかどうかを検出する...これにより、何か問題が発生した場合の時間の損失を回避できます
Web を検索しましたが、CF でそれを行う方法がありませんでした....connected メソッドはここでは利用できません。
私が見つけた最良の方法は、接続/送信が成功したときにフラグを設定し、何か問題が発生したときにフラグをリセットすることです。