Mine
public text v1 · immutable 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;
}
}
}
}