示例#1
0
        /// <summary>
        /// Creates a new TcpCommunicationChannel object.
        /// </summary>
        /// <param name="clientSocket">A connected Socket object that is
        /// used to communicate over network</param>
        public TcpCommunicationChannel(Socket clientSocket)
        {
            _clientSocket         = clientSocket;
            _clientSocket.NoDelay = true;

            var ipEndPoint = (IPEndPoint)_clientSocket.RemoteEndPoint;

            _remoteEndPoint = new TcpEndPoint(ipEndPoint.Address.ToString(), ipEndPoint.Port);

            _buffer   = new byte[ReceiveBufferSize];
            _syncLock = new object();
        }
示例#2
0
        public void TestMethod1()
        {
            Uri         uri    = new Uri("coap+tls://localhost:" + _serverPort.ToString() + "/hello");
            CoapClient  client = new CoapClient(uri);
            TcpEndPoint ep     = new TcpEndPoint();

            ep.Start();
            client.EndPoint = ep;

            Response resp = client.Get();

            Assert.AreEqual(resp.StatusCode, StatusCode.Content);
        }
示例#3
0
        private void CreateServer()
        {
            _server = new CoapServer();

            TcpEndPoint endpoint = new TcpEndPoint();

            _server.AddEndPoint(endpoint);

            _server.Add(new HelloWorldResource("hello"));

            _server.Start();

            _serverPort = ((System.Net.IPEndPoint)endpoint.LocalEndPoint).Port;
        }
示例#4
0
        /// <summary>
        ///     Creates a new TcpCommunicationChannel object.
        /// </summary>
        /// <param name="clientSocket">
        ///     A connected Socket object that is
        ///     used to communicate over network
        /// </param>
        public TcpCommunicationChannel(Socket clientSocket)
        {
            WireProtocol = WireProtocolManager.GetWireProtocol("Binary");

            _clientSocket = clientSocket;
            // @TODO: Enable support for partial data and nagle algorithm in JsonWireProtocol
            _clientSocket.NoDelay = false;

            var ipEndPoint = (IPEndPoint)_clientSocket.RemoteEndPoint;

            _remoteEndPoint = new TcpEndPoint(ipEndPoint.Address.ToString(), ipEndPoint.Port);

            _buffer   = new byte[ReceiveBufferSize];
            _syncLock = new object();
        }
示例#5
0
        public ZeusServerBase(string address)
        {
            // Minimal address content validation
            if (string.IsNullOrEmpty(address))
            {
                throw new ArgumentNullException("address");
            }

            // Create end-point and server
            _endPoint = new TcpEndPoint(address);
            _server   = ServerFactory.CreateServer(_endPoint);

            // Attach client events
            _server.ClientConnected    += ServerOnClientConnected;
            _server.ClientDisconnected += ServerOnClientDisconnected;
        }
示例#6
0
        /// <summary>
        /// 构造函数
        /// </summary>
        public TcpServer()
        {
            tcpEndPoint        = new TcpEndPoint();
            tcpRunningTimeInfo = new TcpRunningTimeInfo();
            bllEntryPoint      = new BllEntryPoint();

            string strPort   = ConfigurationManager.AppSettings["port"];
            bool   isSuccess = Int32.TryParse(strPort, out tcpEndPoint.port);

            if (!isSuccess)
            {
                LogHelper.WriteLogError("Tcp服务端错误:", "监听端口号设置错误");
            }

            tcpEndPoint.localAddr = Dns.GetHostAddresses(Dns.GetHostName());
            tcpEndPoint.ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
        }
示例#7
0
            public Connection(TcpEndPoint endPoint, IPEndPoint address, Stream stream)
            {
                if (endPoint == null)
                {
                    throw new ArgumentNullException(nameof(endPoint));
                }

                if (address == null)
                {
                    throw new ArgumentNullException(nameof(address));
                }

                if (stream == null)
                {
                    throw new ArgumentNullException(nameof(stream));
                }

                _endPoint       = endPoint;
                RemoteAddress   = address;
                _stream         = stream;
                _receiveProcess = new AsyncProcess(ReceiveProcedure, start: true);
                _disposeHelper  = new AsyncDisposeHelper(DisposeInternalAsync, AsyncDisposeHelperOptions.Synchronize);
            }
示例#8
0
 public TcpServer(TcpEndPoint endPoint)
 {
     _endPoint = endPoint;
 }
示例#9
0
 public NetTcpTesterProxy(TcpEndPoint endpoint) : base(endpoint)
 {
 }
示例#10
0
 /// <summary>
 /// Creates a new TcpClient object.
 /// </summary>
 /// <param name="serverEndPoint">The endpoint address to connect to the server</param>
 public TcpClient(TcpEndPoint serverEndPoint)
 {
     _serverEndPoint = serverEndPoint;
 }
示例#11
0
        private static void RunTest(IPEndPoint ipEndpoint, string ip)
        {
            using (var client = new TcpClient <IValTypes>(ipEndpoint))
            {
                decimal abc    = client.Proxy.GetDecimal(4.5m);
                bool    result = client.Proxy.OutDecimal(abc);
            }

            var tcpEndpoint = new TcpEndPoint(ipEndpoint, 80);

            //using (var client = new NetTcpTesterProxy(ipEndpoint))
            using (var client = new NetTcpTesterProxy(tcpEndpoint))
            {
                var  id            = client.GetId("test1", 3.314, 42, DateTime.Now);
                long q             = 3;
                var  response      = client.Get(id, "mirror", 4.123, out q);
                var  list          = client.GetItems(id);
                var  listFromAsync = client.GetItemsAsync(id).GetAwaiter().GetResult();
            }
            using (var client = new NetTcpMyTesterProxy(ipEndpoint))
            {
                var id       = client.GetId("test1", 3.314, 42);
                int q2       = 4;
                var response = client.Get(id, "mirror", 4.123, out q2);
                var list     = client.GetItems(id, new int[] { 3, 6, 9 });
            }

            var sw   = Stopwatch.StartNew();
            var from = 0;
            var to   = 200;

            Parallel.For(from, to, index =>
            {
                using (var client = new NetTcpTesterProxy(ipEndpoint))
                {
                    for (int i = 0; i < 10; i++)
                    {
                        var id            = client.GetId("test1", 3.314, 42, DateTime.Now);
                        long q            = 2;
                        var response      = client.Get(id, "mirror", 4.123, out q);
                        var list          = client.GetItems(id);
                        var listFromAsync = client.GetItemsAsync(id).GetAwaiter().GetResult();
                    }
                }

                using (var client = new NetTcpMyTesterProxy(ipEndpoint))
                {
                    for (int i = 0; i < 10; i++)
                    {
                        var id       = client.GetId("test1", 3.314, 42);
                        int q2       = 6;
                        var response = client.Get(id, "mirror", 4.123, out q2);
                        var list     = client.GetItems(id, new int[] { 3, 6, 9 });
                    }
                }
            });
            sw.Stop();
            var msperop = sw.ElapsedMilliseconds / 12000.0;

            Console.WriteLine("tcp: {0}, {1}", sw.ElapsedMilliseconds, msperop);

            if ("127.0.0.1" == ip) //only run np tests when testing locally
            {
                var pipeName = "ServiceWireTestHost";
                using (var client = new NetNpTesterProxy(new NpEndPoint(pipeName)))
                {
                    var  id            = client.GetId("test1", 3.314, 42, DateTime.Now);
                    long q             = 2;
                    var  response      = client.Get(id, "mirror", 4.123, out q);
                    var  list          = client.GetItems(id);
                    var  listFromAsync = client.GetItemsAsync(id).GetAwaiter().GetResult();
                }

                sw = Stopwatch.StartNew();
                Parallel.For(from, to, index =>
                {
                    using (var client = new NetNpTesterProxy(new NpEndPoint(pipeName)))
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            var id            = client.GetId("test1", 3.314, 42, DateTime.Now);
                            long q            = 4;
                            var response      = client.Get(id, "mirror", 4.123, out q);
                            var list          = client.GetItems(id);
                            var listFromAsync = client.GetItemsAsync(id).GetAwaiter().GetResult();

                            long id1;
                            long id2;
                            long id3 = client.TestLong(out id1, out id2);
                        }
                    }
                    using (var client = new NetNpMyTesterProxy(new NpEndPoint(pipeName)))
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            var id       = client.GetId("test1", 3.314, 42);
                            int q2       = 4;
                            var response = client.Get(id, "mirror", 4.123, out q2);
                            var list     = client.GetItems(id, new int[] { 3, 6, 9 });
                        }
                    }
                });
                sw.Stop();
                msperop = sw.ElapsedMilliseconds / 12000.0;
                Console.WriteLine("pip: {0}, {1}", sw.ElapsedMilliseconds, msperop);
                Thread.Sleep(2000);
            }
        }
示例#12
0
 /// <summary>
 /// Creates a new TcpConnectionListener for given endpoint.
 /// </summary>
 /// <param name="endPoint">The endpoint address of the server to listen incoming connections</param>
 public TcpConnectionListener(TcpEndPoint endPoint)
 {
     _endPoint = endPoint;
 }
示例#13
0
        static CoapServer SetupServer(ICoapConfig config, EndPoint endPoint, int port, KeySet dtlsSignKeys,
                                      KeySet dtlsValidateKeys)
        {
            //
            //

            CoapServer   server = new CoapServer(config, endPoint, port);
            DTLSEndPoint ep2    = new DTLSEndPoint(dtlsSignKeys, dtlsValidateKeys, port + 1);

            server.AddEndPoint(ep2);

            IResource root = new HelloWorldResource("hello", true);

            server.Add(root);

            IResource x = new OscoapTest("coap");

            root.Add(x);

            x = new OscoapTest("1");
            root.Add(x);

            root.Add(new OscoapTest("2"));
            root.Add(new OscoapTest("3"));
            root.Add(new OscoapTest("6"));
            root.Add(new OscoapTest("7"));

            server.Add(new OscoapTest("test"));

            server.Add(new TimeResource("observe"));

            server.Add(new LargeResource("LargeResource"));

#if DEV_VERSION
            AceTest.Setup(server, "RS1");
#if false
            server.Add(new Com.AugustCellars.CoAP.EDHOC.EdhocResource(edhocKeys, edhocSign));
#endif

            //  Setup the ACE resources
            string UseAsServer = "coaps://localhost:5689/token";
            // UseAsServer = "coaps://31.133.142.90/token";
            // UseAsServer = "coaps://31.133.134.176/token";

            KeySet myDecryptKeySet = new KeySet();
            OneKey key             = new OneKey();

            key.Add(CoseKeyKeys.KeyType, GeneralValues.KeyType_Octet);
            key.Add(CoseKeyParameterKeys.Octet_k, CBORObject.FromObject(new byte[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }));
            key.Add(CoseKeyKeys.KeyIdentifier, CBORObject.FromObject(Encoding.UTF8.GetBytes("SERVER_KID")));
            key.Add(CoseKeyKeys.Algorithm, AlgorithmValues.AES_CCM_64_128_128);

            myDecryptKeySet.AddKey(key);

            key = new OneKey();
            key.Add(CoseKeyKeys.KeyType, GeneralValues.KeyType_Octet);
            key.Add(CoseKeyParameterKeys.Octet_k, CBORObject.FromObject(new byte[] { (byte)'a', (byte)'b', (byte)'c', 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 }));
            key.Add(CoseKeyKeys.KeyIdentifier, CBORObject.FromObject(new byte[] { 0x70, 0x63, 0x6F, 0x61, 0x70, 0x3A, 0x2F, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x68, 0x6F, 0x73, 0x74 }));
            key.Add(CoseKeyKeys.Algorithm, CBORObject.FromObject(5));
            myDecryptKeySet.AddKey(key);

            AuthZ authZ = new AuthZ(myDecryptKeySet, null);
            server.Add(authZ);
            AceOAuthTest r = new AceOAuthTest("ace-echo", true, true, UseAsServer);
            r.AuthTokenProcessor = authZ;
            server.Add(r);
            OscoapContexts = SecurityContextSet.AllContexts;
#endif

            // ep2.Add(new AceOAuthTest("ace/echo", true, true, null));

#if INCLUDE_RD
            ResourceDirectoryResource.CreateResources(server);
#endif

#if DEV_VERSION
            // server = new CoapServer(config);
            CoAPEndPoint tcp = new TcpEndPoint(port);
            tcp.Start();
            server.AddEndPoint(tcp);

            // server.Add(new HelloWorldResource("hello", false));
            // server.Add(new LargeResource("LargeResource"));
            server.Add(new LargeResource("ExtraLargeResource", 20 * 1024));
            server.Add(new StorageResource("StorageHere"));
            server.Start();

            // server = new CoapServer(config);
            tcp = new TLSEndPoint(dtlsSignKeys, dtlsValidateKeys, port + 1);
            tcp.Start();
            server.AddEndPoint(tcp);

            AceTest.Setup(server, "RS2");

            //server.Add(new HelloWorldResource("hello", false));
#endif

            server.Start();
            return(server);
        }
示例#14
0
        public static void Main(String[] args)
        {
            String  method  = null;
            Uri     uri     = null;
            String  payload = null;
            Boolean loop    = false;
            Boolean byEvent = true;

            OneKey userKey = new OneKey();

            userKey.Add(CoseKeyKeys.KeyType, COSE.GeneralValues.KeyType_Octet);
            userKey.Add(CoseKeyParameterKeys.Octet_k, CBORObject.FromObject(Encoding.UTF8.GetBytes("sesame")));
            userKey.Add(CoseKeyKeys.KeyIdentifier, CBORObject.FromObject(Encoding.UTF8.GetBytes("password")));

            if (args.Length == 0)
            {
                PrintUsage();
            }

            Int32 index = 0;

            foreach (String arg in args)
            {
                if (arg[0] == '-')
                {
                    if (arg.Equals("-l"))
                    {
                        loop = true;
                    }
                    if (arg.Equals("-e"))
                    {
                        byEvent = true;
                    }
                    else
                    {
                        Console.WriteLine("Unknown option: " + arg);
                    }
                }
                else
                {
                    switch (index)
                    {
                    case 0:
                        method = arg.ToUpper();
                        break;

                    case 1:
                        try
                        {
                            uri = new Uri(arg);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Failed parsing URI: " + ex.Message);
                            Environment.Exit(1);
                        }
                        break;

                    case 2:
                        payload = arg;
                        break;

                    default:
                        Console.WriteLine("Unexpected argument: " + arg);
                        break;
                    }
                    index++;
                }
            }

            if (method == null || uri == null)
            {
                PrintUsage();
            }


            Request request = NewRequest(method);

            if (request == null)
            {
                Console.WriteLine("Unknown method: " + method);
                Environment.Exit(1);
            }

            if ("OBSERVE".Equals(method))
            {
                request.MarkObserve();
                loop = true;
            }
            else if ("DISCOVER".Equals(method) &&
                     (String.IsNullOrEmpty(uri.AbsolutePath) || uri.AbsolutePath.Equals("/")))
            {
                uri = new Uri(uri, "/.well-known/core");
            }

            request.URI = uri;
            request.SetPayload(payload, MediaType.TextPlain);

            if (uri != null)
            {
                Net.CoAPEndPoint ep = null;



                switch (uri.Scheme)
                {
                case "coap+tcp":
                    ep = new TcpEndPoint();
                    break;

                case "coaps":
                    ep = new DTLSClientEndPoint(userKey);
                    break;
                }
                if (ep != null)
                {
                    request.EndPoint = ep;
                    ep.Start();
                }
            }

            // uncomment the next line if you want to specify a draft to use
            // request.EndPoint = CoAP.Net.EndPointManager.Draft13;

            Thread.Sleep(1000 * 2);

            Console.WriteLine(Utils.ToString(request));

            try
            {
                if (byEvent)
                {
                    request.Respond += delegate(Object sender, ResponseEventArgs e)
                    {
                        Response response = e.Response;
                        if (response == null)
                        {
                            Console.WriteLine("Request timeout");
                        }
                        else
                        {
                            Console.WriteLine(Utils.ToString(response));
                            Console.WriteLine("Time (ms): " + response.RTT);
                        }
                        if (!loop)
                        {
                            request.EndPoint.Stop();
                            Environment.Exit(0);
                        }
                    };
                    request.Send();
                    while (true)
                    {
                        Console.ReadKey();
                    }
                }
                else
                {
                    // uncomment the next line if you need retransmission disabled.
                    // request.AckTimeout = -1;

                    request.Send();

                    do
                    {
                        Console.WriteLine("Receiving response...");

                        Response response = null;
                        response = request.WaitForResponse();

                        if (response == null)
                        {
                            Console.WriteLine("Request timeout");
                            break;
                        }
                        else
                        {
                            Console.WriteLine(Utils.ToString(response));
                            Console.WriteLine("Time elapsed (ms): " + response.RTT);

                            if (response.ContentType == MediaType.ApplicationLinkFormat)
                            {
                                IEnumerable <WebLink> links = LinkFormat.Parse(response.PayloadString);
                                if (links == null)
                                {
                                    Console.WriteLine("Failed parsing link format");
                                    Environment.Exit(1);
                                }
                                else
                                {
                                    Console.WriteLine("Discovered resources:");
                                    foreach (var link in links)
                                    {
                                        Console.WriteLine(link);
                                    }
                                }
                            }
                        }
                    } while (loop);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed executing request: " + ex.Message);
                Console.WriteLine(ex);
                Environment.Exit(1);
            }
        }