// Menu methods for ListView ================================================================ private void MenuItem_CmdSend_Click(object sender, RoutedEventArgs e) { SockUnit sock = treeSock.SelectedItem as SockUnit; if (sock == null || sock.State != SockState.Opened) { return; } // 发送所有选中的命令,目前只支持发送第一条命令... foreach (CmdUnit item in lstViewCmd.SelectedItems) { // init data which is sended out to remote ep byte[] raw_data = SockConvert.ParseCmdstrToBytes(item.Cmd, '#'); string str_data = Convert.ToBase64String(raw_data); //if (item.Encrypt) // raw_data = Encoding.UTF8.GetBytes(Convert.ToBase64String(EncryptSym.AESEncrypt(raw_data))); // add internal header just for translating in SockMaster IPEndPoint ep = sock.Type != SockType.accept ? sock.Lep : sock.Rep; object req = new { id = "service.sesssend", sessid = sock.SESSID, data = str_data, }; core.AddServiceRequest(ServiceRequest.Parse(JsonConvert.SerializeObject(req))); break; } }
// default service private void DefaultService(ServiceRequest request, ref ServiceResponse response) { string log = DateTime.Now + " (" + request.sessdata["rep"] + " => " + request.sessdata["lep"] + ")" + Environment.NewLine; if (request is BinaryRequest) { log += SockConvert.ParseBytesToString(Encoding.UTF8.GetBytes((string)request.data)); } else if (request is JsonRequest) { log += (string)request.data; } else if (request is UnknownRequest) { log += SockConvert.ParseBytesToString((byte[])request.data); } log += Environment.NewLine + Environment.NewLine; uidata.Logger(log); response = null; //throw new Exception("bad request"); }