private void Received_TransBuffer(int userId, IntPtr buf, int len, int userValue) { //过滤信息() string m_Command = Marshal.PtrToStringAnsi(buf); try { if (m_Command.Length > 3) { string[] m_Packet = m_Command.Split(":".ToCharArray()); //选择是否接收文件 if (m_Packet[0] == "003" && m_Packet[3] == "file") { int m_TempUserID = Convert.ToInt32(m_Packet[1]); string m_pacName = GetUserNameByID(m_TempUserID); DialogResult r = MessageBox.Show("文件名:" + m_Packet[2].ToString() + ",是否接收?", m_pacName + "发送文件请求", MessageBoxButtons.YesNo); if (r == System.Windows.Forms.DialogResult.Yes) { FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { receivePath = fbd.SelectedPath; string m_Message = "003:" + m_myUserID.ToString() + ":" + "fileisok:"; byte[] buffer = Encoding.Default.GetBytes(m_Message); int rett = AnyChatCoreSDK.TransBuffer(m_TempUserID, buffer, buffer.Length); } } else { string m_Message = "003:" + m_myUserID.ToString() + ":" + "fileisno:" + m_Packet[2].ToString(); byte[] buffer = Encoding.Default.GetBytes(m_Message); int rett = AnyChatCoreSDK.TransBuffer(m_TempUserID, buffer, buffer.Length); } } //发送文件 else if (m_Packet[0] == "003" && m_Packet[2] == "fileisok") { int taskId = 0; int m_TempUserID = Convert.ToInt32(m_Packet[1]); int flag = AnyChatCoreSDK.TransFile(m_TempUserID, sendPath, 1, 0, 0, ref taskId); Print("成功发送" + sendPath + "文件"); } else if (m_Packet[0] == "003" && m_Packet[2] == "fileisno") { string m_tempName = GetUserNameByID(Convert.ToInt32(m_Packet[1])); Print(m_tempName + "拒绝接收文件" + m_Packet[3].ToString()); } } } catch (Exception ex) { } }
/// <summary> /// 发送透明通道 /// </summary> /// <param name="tuserid">目标ID</param> /// <param name="cmd">指令ID</param> /// <param name="os">参数</param> /// <returns>调用结果</returns> internal int TranBuff(int tuserid, int cmd, params ParamInfo[] os) { int ret = -1; try { string strCmd = CommandHelp.GenerateCommand(cmd, os); byte[] buff = Encoding.Default.GetBytes(strCmd); AnyChatCoreSDK.TransBuffer(tuserid, buff, buff.Length); } catch (Exception ex) { Log.SetLog("VideoChat.Hall.TranBuff TranBuff:" + ex.Message.ToString()); } return(ret); }
private void btn_transfile_Click(object sender, EventArgs e) { if (dgv_onlineuser.SelectedRows.Count == 0) { Print("文件发送失败,请选择目标用户"); return; } else { DataGridViewRow dgvr = dgv_onlineuser.SelectedRows[0]; string m_TempUserName = dgvr.Cells["gvc_username"].Value.ToString(); if (m_TempUserName == frmLogin.m_UserName || m_TempUserName == "大家") { Print("文件发送失败,请选择目标用户"); return; } else { OpenFileDialog dlgopenFile = new OpenFileDialog(); dlgopenFile.Title = "选择需要发送的文件"; DialogResult dr = dlgopenFile.ShowDialog(); if (dr == DialogResult.OK) { if (File.Exists(dlgopenFile.FileName)) { sendPath = dlgopenFile.FileName; //int taskId = 0; int m_TempUserID = GetUserIDByName(m_TempUserName); //发送命令 FileInfo fi = new FileInfo(dlgopenFile.FileName); string m_Message = "003:" + m_myUserID.ToString() + ":" + fi.Name + ":" + "file"; byte[] buffer = Encoding.Default.GetBytes(m_Message); int rett = AnyChatCoreSDK.TransBuffer(m_TempUserID, buffer, buffer.Length); Print("向" + m_TempUserName + "发送文件,等待接收..."); } } dlgopenFile.Dispose(); dlgopenFile = null; } } }