public TcpClientController(TraceSource trace, string ip, int port, NetworkStreamReader reader, NetworkStreamWriter writer) { if (trace == null) { throw new ArgumentNullException(nameof(trace)); } if (string.IsNullOrWhiteSpace(ip)) { throw new ArgumentNullException(nameof(ip)); } if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (writer == null) { throw new ArgumentNullException(nameof(writer)); } _trace = trace; _ip = ip; _port = port; _reader = reader; _writer = writer; }
public TcpServerController(TcpListener server, TraceSource trace, ClientStore clientStore, NetworkStreamReader reader, NetworkStreamWriter writer) { if (server == null) { throw new ArgumentNullException(nameof(server)); } if (trace == null) { throw new ArgumentNullException(nameof(trace)); } if (clientStore == null) { throw new ArgumentNullException(nameof(clientStore)); } if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (writer == null) { throw new ArgumentNullException(nameof(writer)); } _server = server; _trace = trace; _clientStore = clientStore; _reader = reader; _writer = writer; }
private static void EstablishConnectionToMaster(String ip, int port, bool tls, List <Bundle> bundles) { int protocolVersion = 1; TcpClient tcpClient = new TcpClient(ip, port); streamWriter = new RSANetworkStreamWriter(tcpClient.GetStream()); streamReader = new RSANetworkStreamReader(tcpClient.GetStream()); ((RSANetworkStreamWriter)streamWriter).RSASubmit(); /*if (!tls) * { * streamWriter = new NetworkStreamWriter(tcpClient.GetStream()); * streamReader = new NetworkStreamReader(tcpClient.GetStream()); * }*/ streamWriter.Write(BitConverter.GetBytes(protocolVersion)); streamWriter.Write(Encoding.UTF8.GetBytes("*****@*****.**")); streamWriter.Write(Encoding.UTF8.GetBytes("1231231")); streamWriter.Write(Encoding.UTF8.GetBytes("rig1")); streamWriter.Write(Encoding.UTF8.GetBytes("hashed1")); List <String> bundleNames = new List <string>(); foreach (Bundle bundle in bundles) { bundleNames.Add(bundle.Name); } streamWriter.Write(Encoding.UTF8.GetBytes(String.Join(",", bundleNames))); streamWriter.Flush(); }
public void Update() { if (server.Pending()) { clients.Add(server.AcceptTcpClient()); } foreach (TcpClient client in clients) { var stream = client.GetStream(); if (stream.DataAvailable) { byte[] buffer = NetworkStreamReader.Read(stream, client.ReceiveBufferSize); Mirroring(client, buffer); var message = restMessage + System.Text.Encoding.UTF8.GetString(buffer); restMessage = ""; string[] messages = message.Split('뷁'); for (int i = 1; i < messages.Length; ++i) { string msgRaw = messages[i]; string[] msgs = msgRaw.Split('끊'); if (msgs.Length == 1) { restMessage = msgs[0]; continue; } string msg = msgs[0]; if (msg.Length == 0) { continue; } if (msg.Length == 0) { continue; } foreach (OnMessageReceived fn in onMessageReceived) { NetworkDecorator.NetworkMessage m = NetworkDecorator.StringToMessage(msg); fn(client, m); if (m.header == NetworkHeader.ClOSE) { removingClients.Add(client); } } } } } foreach (TcpClient client in removingClients) { clients.Remove(client); } removingClients.Clear(); }
private void AcceptSocketCallback(IAsyncResult ar) { //if (_s != null) //{ // if (_s.Connected) // { // //We need to get rid of the other socket before accepting this one. // Restart("new incomming connection."); // } //} //Accept the connection and store a pointer to the connected socket in _s TcpListener myListener = (TcpListener)ar.AsyncState; _s = myListener.EndAcceptSocket(ar); //myListener.Stop(); _s.SendTimeout = _sendTimeoutInterval; //testing to disable, result is bad, make this line remain UNcommented, works at 250 _ns = new NetworkStream(_s); Debug.Print(_s.RemoteEndPoint.AddressFamily.ToString() + " has connected"); //Start listening for data from the socket. _nsr = new NetworkStreamReader(_ns, _endOfPacketChar); _nsr.PacketReady += new NetworkStreamReader.PacketReadyEventHandler(_nsr_PacketReady); _nsr.NeedToRestart += new NetworkStreamReader.NeedToRestartEventHandler(_nsr_NeedToRestart); new Thread(_nsr.DoWork).Start(); //And start the thread for sending packets _nss = new NetworkStreamSender(_ns, _endOfPacketChar); _nss.ComFailure += new NetworkStreamSender.ComFailureEventHandler(_nss_ComFailure); _nss.PacketSent += new NetworkStreamSender.PacketSentEventHandler(_nss_PacketSent); new Thread(_nss.DoWork).Start(); //Start the time out packet. If the socket was not able to send this packet, the client has disconnected. _heartbeatTimer = new System.Timers.Timer(_heartbeatInterval); _heartbeatTimer.Elapsed += new ElapsedEventHandler(_timeout_Elapsed); _heartbeatTimer.Start(); //welcome message SendPacket("welcome"); Debug.Print(_s.LocalEndPoint.AddressFamily.ToString()); ServerConnectionStateChange(ConnectionState.Connected, _s.LocalEndPoint.AddressFamily.ToString() + " has connected."); }
public void Update() { if (!NetworkValues.isNetwork) { return; } var stream = client.GetStream(); if (stream.CanRead && stream.DataAvailable) { byte[] buffer = NetworkStreamReader.Read(stream, client.ReceiveBufferSize); var message = restMessage + System.Text.Encoding.UTF8.GetString(buffer); restMessage = ""; string[] messages = message.Split('뷁'); if (onMessageReceived.Count > 0) { for (int i = 1; i < messages.Length; ++i) { string msgRaw = messages[i]; string[] msgs = msgRaw.Split('끊'); if (msgs.Length == 1) { restMessage = msgs[0]; continue; } string msg = msgs[0]; if (msg.Length == 0) { continue; } NetworkDecorator.NetworkMessage m = NetworkDecorator.StringToMessage(msg); foreach (OnMessageReceived fn in onMessageReceived) { fn(m); } } } } }