Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ip"></param>
        /// <param name="port"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public bool transfer(string ip, int port, string path)
        {
            try
            {
                using (var client = new System.Net.Sockets.TcpClient(ip, port))
                {
                    using (var ns = client.GetStream())
                    {
                        using (var ms = new MemoryStream())
                        {
                            var ftpMessageData = new FTPMessageData(FTPMessageType.TypeFile);
                            ftpMessageData.Message = Path.GetFileName(path);
                            ftpMessageData.Data    = File.ReadAllBytes(path);
                            BinaryFormatter bf = new BinaryFormatter();
                            bf.Serialize(ms, ftpMessageData);
                            ns.Write(ms.ToArray(), 0, (int)ms.Length);
                        }
                    }
                }
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="listener"></param>
        private void listen(System.Net.Sockets.TcpListener listener)
        {
            var client = listener.AcceptTcpClient();

            using (var ns = client.GetStream())
            {
                ns.ReadTimeout = ns.WriteTimeout = TimeoutMillisec;

                bool disconnected = false;
                do
                {
                    // クライアントからのメッセージを受信
                    using (var rms = new MemoryStream())
                    {
                        ns.Read(rms.ToArray(), 0, (int)rms.Length);

                        BinaryFormatter rbf          = new BinaryFormatter();
                        FTPMessageData  rMessageData = (FTPMessageData)rbf.Deserialize(ns);

                        switch (rMessageData.Type)
                        {
                        case FTPMessageType.TypeHandShake:
                            foreach (var listeners in ServerConnectionListeners)
                            {
                                listeners.OnConnectClient(this, rMessageData.Message);
                            }
                            using (var sms = new MemoryStream())
                            {
                                var sMessageData = new FTPMessageData(FTPMessageType.TypeHandShake);
                                sMessageData.Message = Dns.GetHostName();
                                BinaryFormatter bf = new BinaryFormatter();
                                bf.Serialize(sms, sMessageData);
                                ns.Write(sms.ToArray(), 0, (int)sms.Length);
                            }
                            break;
                        }
                    }
                }while (!disconnected);
            }
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        private void listen(System.Net.Sockets.TcpClient client)
        {
            using (var ns = client.GetStream())
            {
                ns.ReadTimeout = ns.WriteTimeout = TimeoutMillisec;

                using (var ms = new MemoryStream())
                {
                    var ftpMessageData = new FTPMessageData(FTPMessageType.TypeHandShake);
                    ftpMessageData.Message = Dns.GetHostName();
                    BinaryFormatter bf = new BinaryFormatter();
                    bf.Serialize(ms, ftpMessageData);
                    ns.Write(ms.ToArray(), 0, (int)ms.Length);
                }

                bool disconnected = false;
                do
                {
                    // サーバからのメッセージを受信
                    using (var ms = new MemoryStream())
                    {
                        ns.Read(ms.ToArray(), 0, (int)ms.Length);

                        BinaryFormatter bf             = new BinaryFormatter();
                        var             ftpMessageData = (FTPMessageData)bf.Deserialize(ns);

                        switch (ftpMessageData.Type)
                        {
                        case FTPMessageType.TypeHandShake:
                            foreach (var listeners in ClientConnectionListeners)
                            {
                                listeners.OnConnectServer(this, ftpMessageData.Message);
                            }
                            break;
                        }
                    }
                }while (!disconnected);
            }
            client.Close();
        }