示例#1
0
        void ReceiveProcess(Socket clientSocket)
        {
            try
            {
                if (m_bufQueue.Count <= 0)
                {
                    return;
                }
                if (m_serverConnected == false)
                {
                    return;
                }


                if (m_initiateTransfer == true)
                {
                    File.AppendAllText("c:\\tcp.txt", "1 : " + m_bufQueue.Count.ToString() + Environment.NewLine);
                    if (m_bufQueue.Count < m_fileSize)
                    {
                        return;
                    }
                    File.AppendAllText("c:\\tcp.txt", "2 : " + m_bufQueue.Count.ToString() + Environment.NewLine);
                    m_bufQueue.read(readBuffer, m_fileSize);
                    File.AppendAllText("c:\\tcp.txt", "3 : " + m_bufQueue.Count.ToString() + Environment.NewLine);
                    m_binWriter.Write(readBuffer, 0, m_fileSize);
                    File.AppendAllText("c:\\tcp.txt", "4 : " + m_bufQueue.Count.ToString() + Environment.NewLine);
                    m_fileSize         = 0;
                    m_initiateTransfer = false;
                    m_binWriter.Close();
                    m_binWriter = null;
                    File.AppendAllText("c:\\tcp.txt", "5 : " + m_bufQueue.Count.ToString() + Environment.NewLine);
                    if (m_bufQueue.Count < 6)
                    {
                        return;
                    }
                    File.AppendAllText("c:\\tcp.txt", "6 : " + m_bufQueue.Count.ToString() + Environment.NewLine);
                }


                m_bufQueue.read(readBuffer, 6);
                string   str = Encoding.ASCII.GetString(readBuffer, 0, 6);
                string[] s   = str.Split(new Char[] { '|' });
                if (s[0] != "@")
                {
                    return;
                }
                while (m_bufQueue.Count < int.Parse(s[1]))
                {
                    Thread.Sleep(1);
                }
                m_bufQueue.read(readBuffer, int.Parse(s[1]));
                str = Encoding.ASCII.GetString(readBuffer, 0, int.Parse(s[1]));

                string[] jdata = str.Split(new Char[] { '|' });


                if (jdata[0] != "sendcredintials" && m_userName != m_loginName && m_hasPassword != m_password)
                {
                    string jData = m_wja.SendErrorMessage("TCP Server has rejected client credentials");
                    SendMessage(clientSocket, jData);
                    return;
                }

                switch (jdata[0])
                {
                case "sendcredintials":
                {
                }
                break;

                case "initiatefiletransfer":
                {
                    m_fileTransferInfo = m_wja.DeserializeObject <ServerJsonApi.jFileTransfer>(jdata[1]);
                    m_initiateTransfer = true;
                    m_fileSize         = int.Parse(m_fileTransferInfo.fileSize);
                    string fieldDir   = m_fileTransferInfo.DirectoryName.Substring("c:\\".Length);
                    string pathOfFile = m_storageDirectory + "\\" + m_fileTransferInfo.guidName + "\\" + m_fileTransferInfo.userName + "\\" + fieldDir;
                    if (Directory.Exists(pathOfFile) == false)
                    {
                        Directory.CreateDirectory(pathOfFile);
                    }
                    pathOfFile += "\\" + m_fileTransferInfo.fileName;
                    m_binWriter = new BinaryWriter(File.Open(pathOfFile, FileMode.Create));
                }
                break;
                }
            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);
            }
        }