/// <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); }
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); } } }