private void Receive(Socket s) { Socket handler = s; NetworkStream stream = new NetworkStream(handler); BinaryFormatter bformatter = new BinaryFormatter(); SignalLibrary.Signal sg = null; while (flag) { if (stream.DataAvailable == true) { try { sg = (SignalLibrary.Signal)bformatter.Deserialize(stream); } catch (Exception exc) { Console.WriteLine(exc); } String message = sg.data; logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> {clientName} >> Received from: " + sg.sender + " >> " + message + Environment.NewLine; } Thread.Sleep(10); } }
public void Send(string message, string receiver) { if (cpcc.IsClientConnected(receiver)) { Socket handler = clientSocket; NetworkStream stream = new NetworkStream(handler); double freq = 235.3; SignalLibrary.Signal sg = new SignalLibrary.Signal(clientName, portName, receiver, freq, message); if (sg.sender == "K1") { if (sg.destination == "K2") { sg.frequency = 235.3; } else if (sg.destination == "K3") { sg.frequency = 236.3; } } else if (sg.sender == "K2") { if (sg.destination == "K1") { sg.frequency = 235.3; } else if (sg.destination == "K3") { sg.frequency = 234.3; } } else if (sg.sender == "K3") { if (sg.destination == "K1") { sg.frequency = 236.3; } else if (sg.destination == "K2") { sg.frequency = 234.3; } } BinaryFormatter binformatter = new BinaryFormatter(); binformatter.Serialize(stream, sg); stream.Flush(); stream.Close(); } else { Task.Run(() => { MessageBox.Show("Client not available."); }); } }
private void DetranspondSignal(SignalLibrary.Signal signal) { foreach (CommandLibrary.PortMatch pm in portMatchList) { if (pm.receivedPort.Equals(signal.lastPort)) { mainWindow.Invoke(new Action(() => Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> {nodeName} >> Redirecting signal from {signal.lastPort} to Client (port {pm.destinationPort}), frequency changed from {signal.frequency} THz to 235.3 THz" + Environment.NewLine)); signal.modulation = null; signal.lastPort = pm.destinationPort; signal.subcarriers = null; signal.frequency = 235.3; break; } } }
private void TranspondSignal(SignalLibrary.Signal signal) { foreach (CommandLibrary.PortMatch pm in portMatchList) { if (pm.receivedPort.Equals(signal.lastPort) && pm.connectionFreq == signal.frequency) { double freq = signal.frequency; signal.frequency = (double)((pm.endFreq + pm.startFreq) / 2); mainWindow.Invoke(new Action(() => Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> {nodeName} >> Redirecting signal from Client {signal.sender} (port {signal.lastPort}) to {pm.destinationPort}, frequency changed from {freq} THz to {signal.frequency} THz" + Environment.NewLine)); signal.modulation = pm.modulation; signal.lastPort = pm.destinationPort; signal.subcarriers = (Int32)((pm.endFreq - pm.startFreq) / 0.00625); break; } } }
private static Task receive(Socket s, Form1 f) { Socket handler = s; NetworkStream stream = new NetworkStream(handler); BinaryFormatter bformatter = new BinaryFormatter(); SignalLibrary.Signal sg = null; while (true) { string timestamp = DateTime.UtcNow.ToString("HH:mm:ss.fff"); int port = 0; string id = null; int nextPort = 0; string nextId = null; if (stream.DataAvailable == true) { try { sg = (SignalLibrary.Signal)bformatter.Deserialize(stream); } catch (Exception exc) { Console.WriteLine(exc); } port = sg.lastPort; foreach (SocketMatch sm in socketMatchList) { if (((IPEndPoint)sm.s.LocalEndPoint).Port.ToString() == ((IPEndPoint)handler.LocalEndPoint).Port.ToString()) { id = sm.elementId; } } //sprawdza ID elementu oraz numer portu, na ktory nalezy przekierowac wiadomosc foreach (Link l in linkList) { if (l.sourceId == id && l.sourcePort == port) { nextPort = l.receiverPort; nextId = l.receiverId; } } f.textBox1.Invoke(new Action(() => { f.textBox1.AppendText(DateTime.UtcNow.ToString("HH:mm:ss.fff") + " >> Signal received from: " + id + " Port: " + sg.lastPort + Environment.NewLine); })); int passer = socketMatchList.FindIndex(x => x.elementId == nextId); Socket tempSocket = socketMatchList[passer].s; if (passer >= 0) { f.textBox1.Invoke(new Action(() => { f.textBox1.AppendText(DateTime.UtcNow.ToString("HH: mm:ss.fff") + " >> Passing signal to: " + nextId + Environment.NewLine); })); NetworkStream senderStream = new NetworkStream(workingCloudSockets.Find(x => x.RemoteEndPoint == tempSocket.RemoteEndPoint)); sg.lastPort = nextPort; bformatter.Serialize(senderStream, sg); senderStream.Flush(); senderStream.Close(); } else { f.textBox1.Invoke(new Action(() => { f.textBox1.AppendText(DateTime.UtcNow.ToString("HH:mm:ss.fff") + " >> This port is not connected! End of channel." + Environment.NewLine); })); } } Thread.Sleep(20); } }
private void Receive(Socket s) { NetworkStream stream = new NetworkStream(s); BinaryFormatter bformatter = new BinaryFormatter(); SignalLibrary.Signal signal = null; while (true) { if (stream.DataAvailable == true) { try { signal = (SignalLibrary.Signal)bformatter.Deserialize(stream); } catch (Exception exc) { Console.WriteLine(exc); } if (signal.frequency == 235.3) { if (signal.destination == "K1") { signal.destination = "A:SN1:SN4:OXC1"; } else if (signal.destination == "K2") { signal.destination = "A:SN1:SN17:OXC4"; } TranspondSignal(signal); bformatter.Serialize(stream, signal); stream.Flush(); } else if (signal.frequency == 234.3) { if (signal.destination == "K1") { signal.destination = "A:SN1:SN4:OXC1"; } else if (signal.destination == "K3") { signal.destination = "B:SN2:SN5:OXC6"; } TranspondSignal(signal); bformatter.Serialize(stream, signal); stream.Flush(); } else if (signal.frequency == 236.3) { if (signal.destination == "K3") { signal.destination = "B:SN2:SN5:OXC6"; } else if (signal.destination == "K2") { signal.destination = "A:SN1:SN17:OXC4"; } TranspondSignal(signal); bformatter.Serialize(stream, signal); stream.Flush(); } else { foreach (CommandLibrary.PortMatch pm in portMatchList) { double cFreq = (double)((pm.endFreq + pm.startFreq) / 2); if (pm.receivedPort.Equals(signal.lastPort) && pm.routerName.Equals(signal.destination) && cFreq == signal.frequency) { DetranspondSignal(signal); bformatter.Serialize(stream, signal); stream.Flush(); break; } else if (pm.receivedPort.Equals(signal.lastPort) && cFreq == signal.frequency) { mainWindow.Invoke(new Action(() => Logs += DateTime.UtcNow.ToString("HH:mm:ss.fff") + $" >> {nodeName} >> Redirecting signal from {signal.lastPort} to {pm.destinationPort}, frequency {signal.frequency} THz" + Environment.NewLine)); signal.lastPort = pm.destinationPort; bformatter.Serialize(stream, signal); stream.Flush(); break; } } } } Thread.Sleep(10); } }