private bool Start(params object[] po) { timer.Enabled = !_stop; if (_new || ipaddress == null || reciever == null || sender == null) { if (_password) { string[] stra = po[0].ToString().Split(','); setpassword("", stra.Last().Trim()); if (stra.Length > 1) { po[0] = MiMFa_CollectionService.GetAllItems(MiMFa_CollectionService.GetPart(stra, 0, stra.Length - 1), ",", 0); } else { po[0] = ""; } } ipaddress = IPAddress.Any; if (_all) { ipaddress = IPAddress.Any; } else { try { ipaddress = IPAddress.Parse(MCL.Parse(po[0] + "")); } catch { } } reciever = new MiMFa_Receiver(); sender = new MiMFa_Sender(); sender.Port = reciever.Port = port; sender.BufferSize = reciever.BufferSize = buffer; reciever.EndReceiveData += (b, ip, i) => { object o = MiMFa_IOService.Deserialize(b); if (string.IsNullOrEmpty(password)) { content = o; } else if (!MiMFa_CollectionService.ExistIn(remotedic, ip.Address)) { remotedic.Add(ip.Address, crypt.GetHashString(o.ToString())); } else if (remotedic[ip.Address] == password) { content = o; } else { remotedic[ip.Address] = crypt.GetHashString(o.ToString()); } }; reciever.SendCallBackData += (o, ip, i) => { contentcallback = o; }; reciever.Start(ipaddress); if (ipaddress != IPAddress.Any) { sender.InterlocutorIP = ipaddress; } return(false); } if (ipaddress != IPAddress.Any) { sender.InterlocutorIP = ipaddress; } else if (sender.InterlocutorIP == null || _ip || i) { try { string[] stra = po[0].ToString().Split(','); ipaddress = sender.InterlocutorIP = IPAddress.Parse(stra.First().Trim()); if (stra.Length > 1) { po[0] = MiMFa_CollectionService.GetAllItems(stra, ",", 1); } else { po[0] = ""; } } catch { } } sender.Port = reciever.Port = port; sender.BufferSize = reciever.BufferSize = buffer; sender.Run = reciever.Run = !_stop; return(true); }