110,538
社区成员
发帖
与我相关
我的任务
分享
private void SendFileStream(Socket socketStream, FileStream fs, byte[] byPack, string strFileName)
{
byte[] byHead = new byte[128];
byHead[0] = byPack[0];
byHead[1] = byPack[1];
byte[] byFileName = encodingGB.GetBytes(strFileName);
byHead[2] = Convert.ToByte(byFileName.Length);
byFileName.CopyTo(byHead, 3);
if (socketStream != null)
{
SocketSendMessage(socketStream, byHead);
}
else
{
MessageBox.Show("socket");
return;
}
//socketStream.Send(byHead);
byte[] byBody = new byte[PACKET_SIZE];
int nPackCount = Convert.ToInt32(byPack[0]) * Convert.ToInt32(byPack[1]);
int nCurrentPack = 0;
while (true)
{
if (socketStream != null)
{
SocketReceiveMessage(socketStream);
}
if (Convert.ToChar(byRec[0]) == 'E')
{
fs.Dispose();
fs.Close();
break;
}
else if (Convert.ToChar(byRec[0]) == 'S')
{
nCurrentPack = Convert.ToInt32(byRec[1]) * 256 + Convert.ToInt32(byRec[2]);
fs.Seek((nCurrentPack - 1) * PACKET_SIZE, SeekOrigin.Begin);
byBody = new byte[PACKET_SIZE];
if ((nCurrentPack == nPackCount) && (nLastPackSize != 0))
{
fs.Read(byBody, 0, nLastPackSize);
}
else
{
fs.Read(byBody, 0, PACKET_SIZE);
}
if (socketStream != null)
{
SocketSendMessage(socketStream, byBody);
}
else
{
MessageBox.Show("socket");
return;
}
}
}
}