Exemplo n.º 1
0
        static void Main(string[] args)
        {
            //TcpListenerHelper listener = new TcpListenerHelper("127.0.0.1", 3699);
            TcpListenerHelper listener = new TcpListenerHelper("0.0.0.0", 3699);

            //TcpListenerHelper listener = new TcpListenerHelper("192.168.100.200", 3688);
            listener.Start();
            Task task = new Task(DoWork, listener);

            task.Start();
            Console.Read();
        }
Exemplo n.º 2
0
        public MainViewModel()
        {
            ReceivedMessages = new BindableCollection <string>();
            SentMessages     = new BindableCollection <string>();
            Messages         = new BindableCollection <string>();
            MessageInspect   = new MessageInspectViewModel();

            IPAddress = ConfigurationManager.AppSettings["IPAddress"];
            Port      = Int32.Parse(ConfigurationManager.AppSettings["Port"]);

            _Listener         = new TcpListenerHelper();
            _Listener.Notify += new EventHandler <NotifyEventArgs>(Listener_Notify);
        }
Exemplo n.º 3
0
 public void Process(IStreamServer server)
 {
     try
     {
         server.Listeners[StreamIndex] = TcpListenerHelper.Start(Address, Port, client =>
         {
             var streamIndex             = --server.ConnectionCount;
             server.Streams[streamIndex] = client.GetStream();
             server.WriteMessage(new AcceptRequest(StreamIndex, streamIndex, client.Client.RemoteEndPoint.ToString()));
         }, exception => server.WriteMessage(new StreamError(StreamIndex, new EndOfStreamException())));
         server.WriteMessage(new ListenResponse(StreamIndex));
     }
     catch (Exception ex)
     {
         server.WriteMessage(new StreamError(StreamIndex, ex));
     }
 }
Exemplo n.º 4
0
 public void CreateServerPort(string listenAddress, int listenPort, string connectAddress, int connectPort)
 {
     try
     {
         var           listenIndex   = ++ConnectionCount;
         ForwardedPort forwardedPort = null;
         Listeners[listenIndex] = TcpListenerHelper.Start(listenAddress, listenPort, client =>
         {
             var streamIndex = ++ConnectionCount;
             Log("Attempting to forward remote port " + client.Client.RemoteEndPoint + " to " + connectAddress + ":" + connectPort);
             Streams[streamIndex] = client.GetStream();
             WriteMessage(new ConnectRequest(streamIndex, client.Client.RemoteEndPoint.ToString(), connectAddress, connectPort));
         }, exception =>
         {
             if (forwardedPort == null)
             {
                 Log("Remote port " + listenAddress + ":" + listenPort + " forwarding to " + connectAddress + ":" + connectPort + " exception: " + exception);
             }
             else
             {
                 Log("Cancelled remote port " + listenAddress + ":" + listenPort + " forwarding to " + connectAddress + ":" + connectPort);
                 OnForwardedPortRemoved(forwardedPort);
             }
         });
         Log("Remote port " + listenAddress + ":" + listenPort + " forwarding to " + connectAddress + ":" + connectPort);
         forwardedPort = new ForwardedPort
         {
             Direction       = ForwardDirection.Remote,
             ListenEndPoint  = listenAddress + ":" + listenPort,
             ConnectEndPoint = connectAddress + ":" + connectPort,
             Remove          = () =>
             {
                 Log("Cancelling remote port " + listenAddress + ":" + listenPort + " forwarding to " + connectAddress + ":" + connectPort);
                 new StreamError(listenIndex, new EndOfStreamException()).Process(this);
             },
         };
         OnForwardedPortAdded(forwardedPort);
     }
     catch (Exception ex)
     {
         Log("Remote port " + listenAddress + ":" + listenPort + " forwarding to " + connectAddress + ":" + connectPort + " failed: " + ex);
     }
 }
Exemplo n.º 5
0
        static void DoWork(object state)
        {
            TcpListenerHelper tlistener = (TcpListenerHelper)state;

            tlistener.Listen();                //监听

            while (tlistener.WaitForConnect()) //等待直到监听到了连接
            {
                try
                {
                    string firstMessage = "";
                    while (!string.IsNullOrEmpty((firstMessage = tlistener.ReadMessage())))
                    {
                        Console.WriteLine(firstMessage);
                        if (firstMessage.ToLower() == "filebak".ToLower())
                        {
                            tlistener.SendMessage("filebakok");
                            #region 文件备份
                            string filepath = Path.Combine(Environment.CurrentDirectory, "FileBak\\" + tlistener.ReadMessage()).ToString();
                            tlistener.ReceiveFile(filepath);
                            if (tlistener.CalcFileHash(filepath) == tlistener.ReadMessage())
                            {
                                tlistener.SendMessage("ok");
                                Console.WriteLine("接收到文件:{0}", filepath);
                            }
                            else
                            {
                                tlistener.SendMessage("wrong");
                                Console.WriteLine("接收失败");
                            }
                            #endregion
                        }
                        else if (firstMessage.ToLower() == "DBBak".ToLower())
                        {
                            #region 数据库备份
                            tlistener.SendMessage("dbbakok");
                            string filename = tlistener.ReadMessage();
                            string filepath = Path.Combine(System.Environment.CurrentDirectory, "DBBak") + "\\" + filename;
                            //接收文件
                            tlistener.ReceiveFile(filepath);
                            //验证hash值
                            string hash = tlistener.ReadMessage();
                            if (hash == tlistener.CalcFileHash(filepath))
                            {
                                tlistener.SendMessage("ok");
                                Console.WriteLine("接收到文件:{0}", filepath);
                            }
                            else
                            {
                                tlistener.SendMessage("wrong");
                                Console.WriteLine("接收失败");
                            }
                            #endregion
                        }
                    }
                }
                catch
                {
                }

                tlistener.Listen();//监听下一个连接
            }
        }