All pastes #2096177 Raw Edit

Mine

public text v1 · immutable
#2096177 ·published 2011-12-24 19:13 UTC
rendered paste body
 if (mp.MessageTag == "requestfile")
                {
                    Output("sending file..." + mp.MessageData);
                    string s_fileName = mp.MessageData;
                    MemoryStream Sreamb = new MemoryStream();
                    using (FileStream m_inputStream = new FileStream(@"i:/music/cky/"+s_fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                
                        int sizea = 1;
                        byte[] m_tmpBuffer = new byte[1];
                        int m_sentOffset = 0;
                        uint seg = 0;
                        int ptr = 0;
                        string filename = "";
                        NativeMethods.FileHeader fileheader = new NativeMethods.FileHeader();
                        MemoryStream Sream = new MemoryStream();
                        while (ptr < m_inputStream.Length)
                        {
      
                            int remaining = (int)(m_inputStream.Length - m_sentOffset);
                            int sendBytes = (remaining > sizea ? sizea : remaining);

                            m_inputStream.Read(m_tmpBuffer, 0, sendBytes);
                            Output("send remaining" + sendBytes);
                       
                            if (m_sentOffset == 0)
                            {
                               
                                fileheader.FileLength = sendBytes;
                                fileheader.FileChunk =m_inputStream.Length;
                                filename = Path.GetFileName(m_inputStream.Name);
                                fileheader.FileName = filename;
                                fileheader.FileData = m_tmpBuffer;
                              
                                Sream.Flush();
                                bformatter.Serialize(Sream, fileheader);
                             
                                byte[] message1 = Sream.GetBuffer();

                                client.BeginSend(message1, 0, message1.Length, SocketFlags.None,
                                         new AsyncCallback(SendData), client);

                                Output("Sent headers");
                                
                            }
                       
                            client.BeginSend(m_tmpBuffer, 0, sendBytes, SocketFlags.None,null, client);
                        
                            m_sentOffset += sendBytes;

                         
                            if (remaining - sendBytes <= 0)
                            {
                                m_inputStream.Close();
                                m_inputStream.Dispose();
                         
                                Output("File Transfered");
                                break;
                               
                            }

                        }
                    }

                }