-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
121 lines (97 loc) · 3.78 KB
/
Copy pathProgram.cs
File metadata and controls
121 lines (97 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
using System.Diagnostics;
using System.Net;
using System.ServiceModel;
using System.Text;
using NewTcpServer.ServiceReference1;
using Server;
namespace NewTcpServer
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
var server = new NetworkServer(new IPEndPoint(IPAddress.Parse("10.12.48.102"), 9001), MessageHandler, 100, 4096);
server.EndpointSocketNotFound += Server_EndpointSocketNotFound;
server.FailedAddingClient += Server_FailedAddingClient;
server.SocketErrorEncountered += Server_SocketErrorEncountered;
server.FailedGeneratingSession += Server_FailedGeneratingSession;
server.SessionClosed += Server_SessionClosed;
server.HighUsageAlert += Server_HighUsageAlert;
server.Start();
Console.WriteLine("Started");
Console.ReadLine();
}
private static void Server_HighUsageAlert(object sender, EventArgs e)
{
Console.WriteLine("High usage detected. Performance degradation likely.");
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var error = e.ExceptionObject as Exception;
Console.WriteLine(error);
}
private static void Server_SessionClosed(object sender, Guid e)
{
//Console.WriteLine(e);
}
private static void Server_FailedGeneratingSession(object sender, EndPoint e)
{
Console.WriteLine("Failed generating session for " + e);
}
private static void Server_SocketErrorEncountered(object sender, SocketErrorArgs e)
{
Console.WriteLine("SOCKET ERROR");
Console.WriteLine("Who? " + e.SocketEndPoint);
Console.WriteLine("What? " + e.Error);
Console.WriteLine("When? " + e.Source);
}
private static void Server_FailedAddingClient(object sender, EndPoint e)
{
Console.WriteLine("Failed adding " + e);
}
private static void Server_EndpointSocketNotFound(object sender, MessageResponse e)
{
Console.WriteLine("Could not respond to " + e.Context.ReceivedOn);
}
private static Service1Client _FloatingClient;
private static Service1Client FloatingClient
{
get
{
_FloatingClient = _FloatingClient ?? new Service1Client();
if (_FloatingClient.State != CommunicationState.Faulted)
{
return _FloatingClient;
}
try
{
_FloatingClient.Close();
}
catch
{
_FloatingClient.Abort();
}
((IDisposable)_FloatingClient).Dispose();
_FloatingClient = new Service1Client();
return _FloatingClient;
}
}
private static MessageResponse MessageHandler(MessageContext messageContext)
{
var request = Encoding.Default.GetString(messageContext.Request);
try
{
string response = FloatingClient.GetData(Convert.ToInt32(request));
return MessageResponse.Create(messageContext, Encoding.Default.GetBytes(response));
}
catch (Exception error)
{
Console.WriteLine("Request - " + request);
Console.WriteLine(error);
return MessageResponse.Create(messageContext, Encoding.Default.GetBytes(error.Message));
}
}
}
}