static void Main(string[] args) { ISocketClient client = null; try { string server = args.Length > 0 ? args[0] : null; int port = args.Length > 1 ? Int32.Parse(args[1]) : cDefaultPort; string mode = args.Length > 2 ? args[2] : "sub"; int count = args.Length > 3 ? Int32.Parse(args[3]) : cDefaultCount; string pubdata = args.Length > 4 ? args[4] : "{0}\r\n"; Info("DOTNET-SOCKETS Client"); client = new AsyncSocketClient(server, port); client.Connected += (sender, b) => { Debug("DOTNET-SOCKET Client: connected"); }; client.Disconnected += (sender, b) => { Debug("DOTNET-SOCKET Client: disconnected"); }; client.Error += (sender, err) => { Error("DOTNET-SOCKET Client", err.Value); }; client.Sent += (sender, size) => { Debug("DOTNET-SOCKET Client: Sent [{0}] bytes of data", size); }; client.ReceivedData += (sender, data) => { string msg = System.Text.Encoding.UTF8.GetString(data.Data, 0, data.Size); Debug("DOTNET-SOCKET Client: Received [{0}] bytes of data", data.Size); Debug("DOTNET-SOCKET Client: {0}", msg); }; client.Log += (sender, a) => { Log(a.Level, a.Message, a.Exception, a.Args); }; client.Open().Wait(); if (mode == "pub") Publish(client, pubdata, count); else Subscribe(client, count); } catch (Exception ex) { Error("DOTNET-SOCKET Client", ex); } finally { Info("DOTNET-SOCKET Client closing"); if (client != null) client.Close().Wait(); Info("DOTNET-SOCKET Client done"); } }
public AsyncSocketClientTest(ITestOutputHelper output) { _log = new MockLog(output); _server = new MockTcpServer(_log); _log.Debug("AsyncSocketClientTest: Start mock server"); _server.Start(); _client = new AsyncSocketClient("127.0.0.1", MockTcpServer.cPort); }
public Task<ISocketClient> Accept() { try { if (_socket == null) return Task<ISocketClient>.FromResult<ISocketClient>(null); var tcs = new TaskCompletionSource<ISocketClient>(_socket); _socket.BeginAccept((ar) => { try { var t = (TaskCompletionSource<ISocketClient>)ar.AsyncState; var s = (Socket)t.Task.AsyncState; try { ISocketClient client = new AsyncSocketClient(s.EndAccept(ar)); HandleClient(client); _clients.Add(client); RaiseConnected(client); t.TrySetResult(client); } catch (Exception exc) { RaiseError(exc); t.TrySetException(exc); } } catch (Exception ex) { RaiseError(ex); tcs.TrySetException(ex); } }, tcs); return tcs.Task; } catch (Exception ex) { RaiseError(ex); } return Task<ISocketClient>.FromResult<ISocketClient>(null); }