📄 cfile_trans.cs
字号:
Buffer.BlockCopy(Packet, 0, bTmp, 20, Packet.Length);
stream.Write(bTmp, 0, bTmp.Length);
//等待回复信息
stream.Flush();
MainForm.logs("send data!CWD");
return true;
case defcmd.UPF: //上传文件
///组装包头
bTmp = new byte[20+Packet.Length];
Buffer.BlockCopy(BitConverter.GetBytes(bTmp.Length), 0, bTmp, 0, 4);
//命令类型
Buffer.BlockCopy(BitConverter.GetBytes(defcmd.UPF), 0, bTmp, 4, 4);
//seq----上传文件的长度
Buffer.BlockCopy(BitConverter.GetBytes(0), 0, bTmp, 8, 4);
//时间
Buffer.BlockCopy(Encoding.GetEncoding(936).GetBytes(DateTime.Now.ToString("yyyyMMdd")), 0, bTmp, 12, 8);
//文件名
Buffer.BlockCopy(Packet, 0, bTmp, 20, Packet.Length);
//上传文件请求
stream.Write(bTmp, 0, bTmp.Length);
//等待回复信息
stream.Flush();
MainForm.logs("send data!UPF");
return true;
case defcmd.UPF_BODY:
byte [] rb = new byte[8192];
int i = r.Read(rb, 0, rb.Length);
bTmp = new byte[12+i];
Buffer.BlockCopy(BitConverter.GetBytes(bTmp.Length), 0, bTmp, 0, 4);
//命令类型
Buffer.BlockCopy(BitConverter.GetBytes(defcmd.UPF_BODY), 0, bTmp, 4, 4);
if (i > 0)
{
//seq
Buffer.BlockCopy(BitConverter.GetBytes(nfindex), 0, bTmp, 8, 4);
//文件包
Buffer.BlockCopy(rb, 0, bTmp, 12, i);
}
else
Buffer.BlockCopy(BitConverter.GetBytes(0), 0, bTmp, 8, 4);
nfindex ++;
stream.Write(bTmp, 0, bTmp.Length);
//等待回复信息
stream.Flush();
MainForm.logs("send data!UPF_BODY");
return true;
case defcmd.DOF: //下载文件
///组装包头
bTmp = new byte[20+Packet.Length];
Buffer.BlockCopy(BitConverter.GetBytes(bTmp.Length), 0, bTmp, 0, 4);
//命令类型
Buffer.BlockCopy(BitConverter.GetBytes(defcmd.DOF), 0, bTmp, 4, 4);
//seq
Buffer.BlockCopy(BitConverter.GetBytes(0), 0, bTmp, 8, 4);
//时间
Buffer.BlockCopy(Encoding.GetEncoding(936).GetBytes(DateTime.Now.ToString("yyyyMMdd")), 0, bTmp, 12, 8);
//文件名
Buffer.BlockCopy(Packet, 0, bTmp, 20, Packet.Length);
//下载文件请求
stream.Write(bTmp, 0, bTmp.Length);
//等待回复信息
stream.Flush();
MainForm.logs("send data!DOF");
return true;
case defcmd.DOF_BODY: //下载文件
///组装包头
bTmp = new byte[12];
Buffer.BlockCopy(BitConverter.GetBytes(bTmp.Length), 0, bTmp, 0, 4);
//命令类型
Buffer.BlockCopy(BitConverter.GetBytes(defcmd.DOF_BODY), 0, bTmp, 4, 4);
//seq
Buffer.BlockCopy(BitConverter.GetBytes(nfindex), 0, bTmp, 8, 4);
//下载文件请求
stream.Write(bTmp, 0, bTmp.Length);
nfindex ++;
//等待回复信息
stream.Flush();
MainForm.logs("send data!DOF_BODY");
return true;
}
return false;
}
catch(Exception ep)
{
MainForm.logs("[ParseCMSG_SendPacket]error:" + ep.Message);
return false;
}
}
/// <summary>
/// 解释服务器返回指令
/// </summary>
/// <param name="cmd">命令</param>
/// <param name="Reault">命令状态</param>
/// <param name="Packet">包体</param>
public bool ParseCMSG_FileCmd(int cmd, int Reault, byte[] Packet)
{
//int nIndex;
//String szSur = null;
try
{
switch(cmd)
{
case defcmd.CONNECT: //CC登录请求
String szPack = "";
for (int i = 0 ; i < Packet.Length; i ++)
szPack = String.Format("{0}[{1}]", szPack, Packet[i]);
MainForm.logs(szPack);
byte bVer = Packet[4];
byte Hver = (byte)(bVer >> 4);
byte Lver = (byte)(bVer & 0x0f);
if ( defcmd.OK == BitConverter.ToInt32(defcmd.b2b(Packet, 0, 4), 0))
{
m_Enable = true;
theApp.TraceMsg("连接成功!");
return true;
}
else if (bVer != defcmd.Version)
theApp.TraceMsg(String.Format("服务器版本:V{0}.{1}", Hver, Lver));
else
theApp.TraceMsg("连接失败!");
break;
case defcmd.CWD: //改变当前目录
if (defcmd.OK == Reault)
{
theApp.TraceMsg("目录跳转成功,当前目录为:"+m_shPath);
return true;
}
else
theApp.TraceMsg("目录跳转失败!");
break;
case defcmd.UPF: //文件上传操作
if (defcmd.OK == Reault)
{
theApp.TraceMsg("准备上传文件!");
return true;
}
else
theApp.TraceMsg("文件准备上传失败!");
break;
case defcmd.UPF_BODY: //文件包体上传操作
String szResult = Encoding.GetEncoding(936).GetString(Packet, 0, Packet.Length - 1);
if (szResult.ToUpper() == "OK")
{
if (Reault != 0)
theApp.TraceMsg(String.Format("上传文件块[{0}]成功!", Reault));
else
{
m_Enable = false;
r.Close();
fs.Close();
theApp.TraceMsg("上传文件成功!");
}
return true;
}
else
theApp.TraceMsg("文件准备上传失败!");
break;
case defcmd.DOF: //文件下载操作
if (defcmd.OK == Reault)
{
theApp.TraceMsg("准备下载文件!");
return true;
}
else
theApp.TraceMsg("文件准备下载失败!");
break;
case defcmd.DOF_BODY:
if (Reault != 0)
{
theApp.TraceMsg(String.Format("下载文件块[{0}]成功!", Reault));
w.Write(Packet, 0, Packet.Length);
}
else
{
m_Enable = false;
w.Close();
fs.Close();
theApp.TraceMsg("下载文件成功!");
}
break;
}
}
catch(Exception ep)
{
MainForm.logs("[ParseCMSG_FileCmd]error:" + ep.Message);
return false;
}
return false;
}
/// <summary>
/// 获取服务器返回(验证过程)
/// </summary>
/// <param name="stream">SOCKET流</param>
/// <returns></returns>
public bool ThreadRecvCMSG_FilePacket(NetworkStream stream)
{
Int32 i;
byte []tmp = null;
//init param
int nTotal;
int nCmd;
int nSeq;
MemoryStream ms = null;
if (null == stream)
return false;
try
{
tmp = new byte[1024];
if ((i = stream.Read(tmp, 0, tmp.Length)) > 4)
{
ms = new MemoryStream(2048);
ms.Write(tmp, 0, i);
}
stream.Flush();
if (ms.Length > 12)
{
tmp = new byte[12];
ms.Position = 0;
if ((i = ms.Read(tmp, 0, 12)) == 12)
{
nTotal = BitConverter.ToInt32(defcmd.b2b(tmp, 0, 4), 0);
nCmd = BitConverter.ToInt32(defcmd.b2b(tmp, 4, 4), 0);
nSeq = BitConverter.ToInt32(defcmd.b2b(tmp, 8, 4), 0);
if (ms.Length >= (nTotal - 12))
tmp = new byte[nTotal - 12];
if ((i = ms.Read(tmp, 0, nTotal - 12))> 0)
{
ms.Close();
ms = null;
return ParseCMSG_FileCmd(nCmd, nSeq, tmp);
}
}
}
}
catch(ArgumentOutOfRangeException aore)
{
MainForm.logs(String.Format("(ThreadRecvCMSG_FilePacket)Source:{0},TargetSite{1},Message{2}", aore.Source, aore.TargetSite, aore.Message));
aore = null;
}
catch(IOException ioe)
{
MainForm.logs(String.Format("(ThreadRecvCMSG_FilePacket)Source:{0},TargetSite{1},Message{2}", ioe.Source, ioe.TargetSite, ioe.Message));
ioe = null;
}
catch(Exception ep)
{
MainForm.logs(String.Format("(ThreadRecvCMSG_FilePacket)Source:{0},TargetSite{1},Message{2}", ep.Source, ep.TargetSite, ep.Message));
ep = null;
}
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -