サーバーは基本常時オンが通常と思いますが、電気代がもったいないので常時オフとします。
サーバーのダウンはクライアントのアクセスが無くなった後サーバー自身がシャットダウンすることとします。
基本はハードディスクのアクセスを管理してアクセスのない時間が10分を超えたらシャットダウンします。
VB.NETで作りますがサービスとして開発するには無償のVS Express2013 for DesktopではWindowsサービス テンプレート が出てきません。仕方がないのでコンソール アプリケーションで開発しタスク スケジューラでPC起動時に実行するようにします。
コンソール アプリケーションのソースです。
Imports System
Imports System.IO
Imports System.Text
Module Module1
Dim stop_code As Integer = 0
Sub Main()
'コンピュータ名
'"."はローカルコンピュータを表す
'コンピュータ名は省略可能(省略時は".")
Dim machineName As String = "."
'カテゴリ名
Dim categoryName As String = "PhysicalDisk"
'カウンタ名
Dim counterName As String = "Disk Transfers/sec"
'インスタンス名
Dim instanceName As String = "2 K: L:"
'PerformanceCounterオブジェクトの作成
Dim pc As New System.Diagnostics.PerformanceCounter( _
categoryName, counterName, instanceName, machineName)
TextWite()
Do
TextRead()
If pc.NextValue() * 1000 <> 0 Then
TextWite()
End If
System.Threading.Thread.Sleep(10)
Loop Until stop_code = 1
End
End Sub
Public Sub TextWite()
Dim fileName As String = "C:\TEMP\ShutDownCounter.txt"
'ファイルを開く
Dim fs As New System.IO.FileStream(fileName, _
System.IO.FileMode.Open, _
System.IO.FileAccess.Write, _
System.IO.FileShare.ReadWrite)
'FileStreamを基にしたStringReaderのインスタンスを作成
Dim enc As System.Text.Encoding = _
System.Text.Encoding.GetEncoding("shift_jis")
'************************************ ここからは単に時刻の固定長テキストを作っている
Dim dNOW As System.DateTime = System.DateTime.Now
Dim syesre_ As String
Dim smanth_ As String
Dim sday_ As String