Example #1
0
        /// <summary>
        /// Send data to endpoint via tcp protocol
        /// </summary>
        /// <param name="data">data to be send</param>
        /// <param name="endpoint_ip">ip of the endpoint</param>
        /// <param name="endpoint_port_number">port of the endpoint</param>
        /// <param name="method_name">invoke endpoint, if endpoint host provided controller</param>
        public void Send(object data, string endpoint_ip, int endpoint_port_number, string method_name = null)
        {
            var ip       = IPAddress.Parse(endpoint_ip);
            var remoteEP = new IPEndPoint(ip, endpoint_port_number);
            var sender   = new NetSockets.Socket(ip.AddressFamily, NetSockets.SocketType.Stream,
                                                 NetSockets.ProtocolType.Tcp);

            sender.Connect(remoteEP);

            var sslMessage = new SslMessage(data, _listeningPort, method_name);
            var message    = SslSerialization.MessageToByteArray(sslMessage);
            int bytesSend  = sender.Send(message);

            sender.Shutdown(NetSockets.SocketShutdown.Both);
            sender.Close();

            // OnSendEvent(this);
        }
Example #2
0
        private void startListening()
        {
            byte[] data = new byte[BUFFER_SIZE];

            _listener.Listen(10);

            while (true)
            {
                var clientSocket = _listener.Accept();
                int bytesRecieve = clientSocket.Receive(data);

                if (bytesRecieve > 0)
                {
                    byte[] tempData = new byte[2048];

                    while (!isFullData(bytesRecieve, data))
                    {
                        bytesRecieve += clientSocket.Receive(tempData);
                        data.ToList().AddRange(tempData);
                    }
                    ;

                    var sslMessage = SslSerialization.BytesToObject <SslMessage>(data.Skip(4).ToArray());
                    var sender     = new Sender(sslMessage.PortForReplaying, clientSocket, this);

                    clientSocket.Shutdown(NetSockets.SocketShutdown.Both);
                    clientSocket.Close();

                    if (sslMessage.CallbackFunction != null && _controller != null)
                    {
                        SslInvoker.InvokeFunction(_controller, sslMessage.CallbackFunction, new object[] { sender, sslMessage.Data });
                    }

                    data = new byte[BUFFER_SIZE];
                    //  OnRecieveEvent(sender, sslMessage.Data);
                }
            }
        }