@@ -21,15 +21,25 @@ public sealed class Program
21
21
"Content-Length:13\r \n " +
22
22
"Connection:keep-alive\r \n " +
23
23
"Server:-RIO-\r \n " +
24
- "Date:" ;
24
+ "Date:DDD, dd mmm yyyy hh:mm:ss GMT" +
25
+ "\r \n \r \n " ;
25
26
26
- private static byte [ ] _headersBytes = Encoding . UTF8 . GetBytes ( headersKeepAliveStr ) ;
27
+ private static byte [ ] _headersBytes = Encoding . ASCII . GetBytes ( headersKeepAliveStr ) ;
27
28
28
- static readonly string bodyStr = "\r \n \r \n " +
29
- "Hello, World!" ;
29
+ private static readonly string bodyStr = "Hello, World!" ;
30
30
31
31
private static byte [ ] _bodyBytes = Encoding . UTF8 . GetBytes ( bodyStr ) ;
32
+ private static Timer UpdateDateTimer ;
32
33
34
+ static Program ( )
35
+ {
36
+ var start = _headersBytes . Length - 33 ;
37
+ UpdateDateTimer = new Timer ( ( obj ) =>
38
+ {
39
+ var date = DateTime . UtcNow . ToString ( "r" ) ;
40
+ Encoding . ASCII . GetBytes ( date , 0 , date . Length , _headersBytes , start ) ;
41
+ } , null , 0 , 1000 ) ;
42
+ }
33
43
34
44
static void Main ( string [ ] args )
35
45
{
@@ -105,12 +115,9 @@ static async Task ServeSocket(RIOTcpConnection socket)
105
115
106
116
var receiveTask = socket . ReceiveAsync ( receiveBuffer0 , CancellationToken . None ) ;
107
117
108
- var dateBytes = Encoding . UTF8 . GetBytes ( "DDD, dd mmm yyyy hh:mm:ss GMT" ) ;
109
-
110
118
111
119
var loop = 0 ;
112
120
var overflow = 0 ;
113
- var lastSeconds = 0L ;
114
121
// need to check for keep alive
115
122
116
123
while ( true )
@@ -278,22 +285,13 @@ static async Task ServeSocket(RIOTcpConnection socket)
278
285
break ;
279
286
}
280
287
281
- var now = DateTime . UtcNow ;
282
- var ticks = now . Ticks / TicksPerSecond ;
283
- if ( lastSeconds != ticks ) {
284
- lastSeconds = ticks ;
285
- var date = now . ToString ( "r" ) ;
286
- Encoding . ASCII . GetBytes ( date , 0 , dateBytes . Length , dateBytes , 0 ) ;
287
- }
288
288
289
289
for ( var i = 1 ; i < count ; i ++ )
290
290
{
291
291
socket . QueueSend ( headerBuffer , false ) ;
292
- socket . QueueSend ( new ArraySegment < byte > ( dateBytes ) , false ) ;
293
292
socket . QueueSend ( bodyBuffer , false ) ;
294
293
}
295
294
socket . QueueSend ( headerBuffer , false ) ;
296
- socket . QueueSend ( new ArraySegment < byte > ( dateBytes ) , false ) ;
297
295
// force send if not more ready to recieve/pack
298
296
var nextReady = receiveTask . IsCompleted ;
299
297
socket . QueueSend ( bodyBuffer , ( ! nextReady ) ) ;
0 commit comments