diff --git a/SixiBroadcast.sln b/SixiBroadcast.sln new file mode 100644 index 0000000..32d538c --- /dev/null +++ b/SixiBroadcast.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UDPServer", "UDPServer\UDPServer.csproj", "{3776C1C2-B676-458C-8EC8-4380892FB1E0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UDPClient", "UDPClient\UDPClient.csproj", "{69C59230-BE16-4E03-8948-664F78D85698}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3776C1C2-B676-458C-8EC8-4380892FB1E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3776C1C2-B676-458C-8EC8-4380892FB1E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3776C1C2-B676-458C-8EC8-4380892FB1E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3776C1C2-B676-458C-8EC8-4380892FB1E0}.Release|Any CPU.Build.0 = Release|Any CPU + {69C59230-BE16-4E03-8948-664F78D85698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69C59230-BE16-4E03-8948-664F78D85698}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69C59230-BE16-4E03-8948-664F78D85698}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69C59230-BE16-4E03-8948-664F78D85698}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/SixiBroadcast.vsdx b/SixiBroadcast.vsdx new file mode 100644 index 0000000..fa4c979 Binary files /dev/null and b/SixiBroadcast.vsdx differ diff --git a/UDPClient/Frm_Client.Designer.cs b/UDPClient/Frm_Client.Designer.cs new file mode 100644 index 0000000..118661a --- /dev/null +++ b/UDPClient/Frm_Client.Designer.cs @@ -0,0 +1,122 @@ +namespace UDPClient +{ + partial class Frm_Client + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_Client)); + this.portT = new System.Windows.Forms.TextBox(); + this.listen = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.msgbox = new System.Windows.Forms.ListBox(); + this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components); + this.SuspendLayout(); + // + // portT + // + this.portT.Location = new System.Drawing.Point(71, 13); + this.portT.Name = "portT"; + this.portT.Size = new System.Drawing.Size(161, 21); + this.portT.TabIndex = 0; + this.portT.Text = "25333"; + // + // listen + // + this.listen.Location = new System.Drawing.Point(238, 11); + this.listen.Name = "listen"; + this.listen.Size = new System.Drawing.Size(42, 23); + this.listen.TabIndex = 2; + this.listen.Text = "监听"; + this.listen.UseVisualStyleBackColor = true; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 16); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 6; + this.label2.Text = "广播端口"; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(196, 40); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(84, 23); + this.button2.TabIndex = 8; + this.button2.Text = "闪烁测试"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // msgbox + // + this.msgbox.FormattingEnabled = true; + this.msgbox.ItemHeight = 12; + this.msgbox.Location = new System.Drawing.Point(14, 79); + this.msgbox.Name = "msgbox"; + this.msgbox.Size = new System.Drawing.Size(266, 184); + this.msgbox.TabIndex = 10; + // + // notifyIcon + // + this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); + this.notifyIcon.Text = "四喜消息提示"; + this.notifyIcon.Visible = true; + this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseDoubleClick); + // + // Frm_Client + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 273); + this.Controls.Add(this.msgbox); + this.Controls.Add(this.button2); + this.Controls.Add(this.label2); + this.Controls.Add(this.listen); + this.Controls.Add(this.portT); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Frm_Client"; + this.Text = "客户端"; + this.Load += new System.EventHandler(this.Frm_Client_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox portT; + private System.Windows.Forms.Button listen; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.ListBox msgbox; + private System.Windows.Forms.NotifyIcon notifyIcon; + } +} + diff --git a/UDPClient/Frm_Client.cs b/UDPClient/Frm_Client.cs new file mode 100644 index 0000000..d957908 --- /dev/null +++ b/UDPClient/Frm_Client.cs @@ -0,0 +1,141 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace UDPClient +{ + public partial class Frm_Client : Form + { + Icon ico1 = new Icon("icon.ico"); + Icon ico2 = new Icon("clear.ico"); + bool is1; + bool isTwinkle; + static UdpClient client; + static IPEndPoint endpoint; + static System.Windows.Forms.Timer tmr = new System.Windows.Forms.Timer(); + + public Frm_Client() + { + InitializeComponent(); + } + + private void Frm_Client_Load(object sender, EventArgs e) + { + client = new UdpClient(new IPEndPoint(IPAddress.Any, 25333)); + endpoint = new IPEndPoint(IPAddress.Any, 0); + //启动客户端监听 + Thread t = new Thread(new ThreadStart(ClientThread)); + t.Start(); + //启动Web监听 + Thread w = new Thread(new ThreadStart(WebListen)); + w.Start(); + //初始化Timer + tmr.Interval = 390; + tmr.Tick += tmr_Tick; + tmr.Enabled = true; + } + + void tmr_Tick(object sender, EventArgs e) + { + if (!isTwinkle) return; + if (is1) + { + is1 = false; + notifyIcon.Icon = ico2; + } + else + { + is1 = true; + notifyIcon.Icon = ico1; + } + } + public static IPAddress GetHostIP() + { + string strHostName = Dns.GetHostName(); //得到本机的主机名 + IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP + foreach (var item in ipEntry.AddressList) + { + if (!item.IsIPv6LinkLocal) + { + return item; + } + } + return null; + } + + private static void WebListen() + { + try + { + HttpListener listerner = new HttpListener(); + listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问 + listerner.Prefixes.Add("http://127.0.0.1:25330/web/"); + listerner.Start(); + Console.WriteLine("WebServer Start Successed......."); + while (true) + { + //等待请求连接 + //没有请求则GetContext处于阻塞状态 + HttpListenerContext ctx = listerner.GetContext(); + ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码 + string username = ctx.Request.QueryString["username"]; + if (username != null && username.Length > 0) + { + IPAddress addr = GetHostIP(); + string str = username + " " + (addr == null ? "null" : addr.ToString()) + " 25333"; + Console.WriteLine(str); + byte[] buf = Encoding.Default.GetBytes(str); + client.Send(buf, buf.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25433)); + } + ctx.Response.Close(); + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + private void ClientThread() + { + try + { + Console.WriteLine("客户端开始监听..."); + while (true) + { + byte[] buf = client.Receive(ref endpoint); + string msg = Encoding.Default.GetString(buf); + Console.WriteLine("收到数据: " + msg); + isTwinkle = true; + notifyIcon.ShowBalloonTip(1000,"四喜消息提示","您有新的提醒 请注意查收!",ToolTipIcon.Info); + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + client.Close(); + } + + } + + private void button2_Click(object sender, EventArgs e) + { + isTwinkle = !isTwinkle; + } + + private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e) + { + isTwinkle = false; + notifyIcon.Icon = ico1; + } + + } +} diff --git a/UDPClient/Frm_Client.resx b/UDPClient/Frm_Client.resx new file mode 100644 index 0000000..150a19a --- /dev/null +++ b/UDPClient/Frm_Client.resx @@ -0,0 +1,726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAQAEBAAAAEACABoBQAARgAAADAwAAABACAAqCUAAK4FAAAgIAAAAQAgAKgQAABWKwAAGBgAAAEA + IACICQAA/jsAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAA////AI1Q + CwDFdBsAxHARAMRxEQDDbg4AxHYeANSvhgASo/MAEaH0ABKi8wANofQAQKPgAL9qCwC+ZgAAvmQAAL9t + DgDRq4AAAprzAACZ8wABmvIAAJn0ADSc3gC9aAkAu2QAALxkAAC7YQAAvWsMANCqgAAAl/QAAJb0AACW + 9gAxmd8AumkQALplBQC6ZgUAumMFALttEwDPqoEAB5fyAAWW8wAGl/IABZb0ADeZ3gC/jlYAvIpQAL2K + TwC9iU4Av5FcAFKo4ABRp94AUqjfAFCn3wB0rtgAu3AeALlrFQC5axMAuWoSALViBQC0ZA0AsWYPAMVo + BwAXmPMAEpf2ABSY9gARl/cAQZvhALNkDACxXwIAsF8CALBgAwC2XwAAu14AALdgAAAGjPEAAov1AAOM + 9AABivUANJHfAK9jCwCtXQAArF4BALRYAAB6bVIASXycAEx6lQBYhKIAEZf4AAGH8wAAh/YAAIf1AACG + 9gAzjd8Aq2EKAKlcAACpWwAAplwCALJiDQBReJIAAIv/AACH/wAAg/QAAIX2AACE9QABhfQAAIT2ADOL + 3gCnXgsApFgAAKVYAACgWQUAK5LpAAOA8gABgvIAAIP3AACD9gAAgvQAAYP1AACB9gAziN4ApVwLAKJX + AACiWAAAnlgHABeT/wAEfvQABn3xAAd98AAFffEAAH31AAF99QAAfPYANIXeAKFbCwCfVQAAnlUAAJ1W + AwABevQAAHr1AAB49gAzgt8AnlgLAJxUAACbVQMAAnj0AAB29QABd/UAAHb2ADSA4ACdVwsAmVMAAJlS + AACYUwMAAnbzAAB29AABd/QAAHT1ADR/3wCbWAoAmFMCAAF19gAAc/YAAHL3ADV94QCISgAAh0kAAIdK + AwADaOAAAGbgAANn4AAAZOEANXXQALBsaQAoAAAAV2hpAGUAZQCcdGkAnHRpABQAAABXaGkASAcAABsA + AAAAAAAACAAAADAlIABoaXQAAKO0APBsaQAUCWgAQAAAADR4MgAUAAAAGwAAAAAAAAAKAAAAICAgACAg + NAAyMAAA9HRpAPR0aQAUAAAAMjIsAKAHAAAbAAAAAAAAAAsAAAAgICAAICAyACwzOACwbGkAsGxpACgA + AABXaGkAZQBlADR1aQA0dWkAFAAAAFdoaQDgBwAAGwAAAAAAAAAIAAAAMCUgAGhpdAAAo7QA8GxpABQJ + aABAAAAANHgyABQAAAAbAAAAAAAAAAoAAAAgICAAICA0ADIwAACMdWkAjHVpABQAAAAyMSwAOAgAABsA + AAAAAAAACwAAACAgIAAgIDIALDM4ALBsaQCwbGkAKAAAAFdoaQBlAGUAzHVpAMx1aQAUAAAAAqWlpqcA + AAAAAACoqaqrrJ+Xl5igAAAAAAAAoaKdo6SWl5iYmQAAAAAAAJqbnJ2ejo+Pj5AAAAAAAACRkpOUlYaH + iIeJAAAAAAAAiouKjI15ent7fAB9fn+AgYKCg4SFbG1tbm8AcHFycnN0dXZ3eF5fYF9hYhpkZWVmZ2hp + amtQUVFRUlMaVVZXWFlaW1xdREVFRkVHSElKAABLTE1OTzc4ODk6Ozw9PgAAP0BBQkMAAAAAAAAAAAAA + AAAAAAAAIhoaGhoaAAAAAAAoKSorLBgaGhoaGgAAAAAAHh4fICEOGhoaGhoAAAAAABMUFRYXGhoaGhoa + AAAAAAAJCgsMDQfgAAAH4AAAB+AAAAfgAAAH4AAABAAAAAQAAAAAAAAAAAAAAABgAAAAYAAA//8AAAPg + AAAD4AAAA+AAAAPgAAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAlGU9/3tE + Bv9+QwD/fUIA/3pCAP96QwD/ekMA/3tCAP95QQD/ekEA/3pBAP95QQD/eUEA/3pAAP95SBL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAC2TL/wRdyv8FXsr/BF7K/wJfyv8DXcv/BFzL/wRdy/8EX8z/BF7M/wNdy/8DXcv/A13M/wRb + x/9uiL7/rXY//5hUBv+VUwD/lFIA/5ZTAP+VUwD/llIA/5dSAP+WUgD/llIA/5ZSAP+UUgD/lVIA/5VR + AP+SVhL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + 9v8AfPb/AH31/wB99f8Affb/AH32/wB99v8Affb/AH72/wB99v8Affb/AH32/wB+9v8AffX/AX31/wN5 + 7/9uk8//tXo+/6NZBv+jWAD/o1gA/6NYAf+iWAH/olkA/6NZAP+iWQD/olkA/6JYAP+jWAD/o1gB/6JX + AP+dWxH/AAAAAAAAAAAAAAAAAAAAAECe9f8AfPT/AH/1/wB/9v8Af/b/AH/2/wB+9v8Af/b/AH72/wB/ + 9v8Af/b/AH/2/wB/9v8Afvb/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/ + 9v8Af/X/AH/1/wF77/9ulM7/tno+/6RbBv+lWQD/pFgA/6RZAf+kWQH/pFgB/6RZAf+kWQH/pFkB/6RY + Af+kWAH/pFkB/6NYAP+dXBD/AAAAAAAAAAAAAAAAAAAAAECf9f8AfPX/AH/1/wB/9v8Af/b/AH/2/wB/ + 9v8AgPb/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AID2/wCA9v8Af/b/AH/2/wB/ + 9v8Af/b/AID2/wB/9v8AgPb/AID2/wB87/9tlM7/t3o+/6VbBv+lWQD/pVgA/6RZAP+kWQD/pFkA/6VY + AP+lWQD/pVkA/6VZAP+lWQD/pVgA/6VZAP+fXRH/AAAAAAAAAAAAAAAAAAAAAECg9f8Af/X/AIL1/wCC + 9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC + 9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8AgvX/AYH1/wJ97/9ulc7/t3s+/6ZbBP+lWQD/pVkA/6VZ + AP+lWQD/pVkA/6VZAP+mWQD/plkA/6ZZAP+mWQD/pVkA/6VZAP+gXhH/AAAAAAAAAAAAAAAAAAAAAECi + 9v8AgfT/AIP1/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE + 9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPX/AIT1/wF+7/9tlc3/t3s+/6db + Bf+mWgD/ploA/6daAP+nWwD/p1sA/6dbAP+nWwD/p1sA/6dbAP+nWwD/p1oA/6haAP+hWwr/AAAAAAAA + AAAAAAAAAAAAADaP2v8AhPf/AIX1/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIb2/wCG + 9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCA + 7v9tmM7/uXs+/6hdBP+oXAD/qFwA/6hbAP+oWwD/qFsA/6hbAP+oWwD/qFsA/6hbAP+oWwD/qFsA/6db + AP+nWwD/pFgA/6NWAP+jVgD/oFkL/zOAwv8Ahvj/AIX1/wCF9v8Ahfb/AIX2/wCF9v8Ahvb/AIb2/wCF + 9v8Ahfb/AIX2/wCF9v8Ahfb/AIb2/wCG9v8Ahfb/AIX2/wCF9v8Ahfb/AIX2/wCF9v8Ahfb/AIb2/wCF + 9v8Ahfb/AIX2/wCB7v9tmM7/unw9/6ldBP+qXQD/ql0A/6pcAP+qXQD/ql0B/6pdAf+qXQH/ql0B/6pd + Af+qXQH/qV0A/6ldAP+rXgD/q14B/6tdAP+rXQD/qV8P/zSCw/8Ah/j/AIb1/wCG9f8Ahvb/AIb2/wCG + 9v8Ahvb/AIb2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIb2/wCF9v8Ahfb/AIX2/wCF + 9v8Ahfb/AIb2/wCG9v8Ahfb/AIb2/wGB7v9tmc3/un49/6xeBv+sXgH/rF4B/6xeAf+tXgD/rV4A/6xe + Af+tXgH/rF8B/61eAP+tXgH/rV4B/61fAf+tXgH/rF4B/61eAf+sXgD/q18P/zWCw/8Ah/j/AIf1/wCH + 9f8Ah/X/AIf1/wCH9v8Ah/b/AIf2/wCH9v8Ahvb/AIb2/wCG9v8Ah/b/AIb2/wCG9v8Ahvb/AIb2/wCG + 9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIf2/wGC7v9tmM3/u30+/6xfBv+tXwH/rV4A/61e + AP+sXgD/rV4A/61eAf+tXgH/rV4A/61eAf+tXgD/rV4B/61eAP+tXgH/rV4B/61eAf+tXQH/q2AR/zOD + xf8Ah/r/AIf3/wCH9/8Ah/f/AIf3/wCH9/8Ah/f/AIf3/wCG9f8AhfX/AIT1/wCE9f8AhfT/AIf1/wCI + 9v8Ah/b/AIf2/wCH9v8AiPb/AIf2/wCH9v8AiPb/AIf2/wCH9v8AiPX/AIn2/wKD7v9tmc7/vH4+/61f + Bf+tXgD/rV4A/61eAP+tXgD/rV4A/61eAP+tXgD/rV4A/61eAP+uXgD/rV4A/65eAP+tXgD/rl4A/61e + AP+uXQH/rGAO/1eEnv80isr/NYnI/zWJyP81icj/NYrI/zSKyP81icf/NI3P/0Gl8P9DpvP/Qqbz/0Sm + 8v83oPP/BYn0/wCG9f8AiPb/AIj2/wCI9v8AiPb/AIj2/wCI9v8AiPb/AIj2/wCI9v8AiPX/AIj2/wGE + 7/9tms7/vYA+/7BgBP+wXgD/sF4A/69dAP+vXQD/sF0A/69dAP+wXQD/r10A/69dAP+wXQD/sF0A/7Bd + AP+vXQD/sF0A/7BdAP+wXgH/r14C/6piEP+pZRP/qWUT/6plE/+qZRP/qWUT/6llE/+qZBP/pnY//wAA + AAAAAAAAAAAAAAAAAAAAAAAADY/0/wCI9f8Aivb/AIr2/wCL9v8Aivb/AIr2/wCK9v8Aivb/AIr2/wCL + 9v8AivX/AIr2/wGF7v9tms7/vn4+/7BgBf+wXwD/sF4A/7BfAP+wXwD/sF8A/69fAP+wXwD/sF8A/7Bf + AP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXgD/sF4A/7Bf + AP+wXAD/rW8v/wAAAAAAAAAAAAAAAAAAAAAAAAAAC5D0/wCJ9f8Aivb/AIr2/wCL9v8Ai/b/AIr2/wCK + 9v8Aivb/AIv2/wCK9v8Ai/X/AYr2/wGH7/9tm8//vn4+/7BfBf+xXwD/sV8A/7FgAP+xYAD/sWAA/7Fg + AP+wYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7Fg + AP+xYAD/sWAA/7FfAP+wXgD/rXAw/wAAAAAAAAAAAAAAAAAAAAAAAAAADJD0/wCK9f8Ai/b/AIr2/wCL + 9v8Ai/b/AIr2/wCK9v8Aivb/AIv2/wCK9v8AivX/AIr2/wGI7/9tnM//wIA+/7NgBf+yXgD/sl4A/7Je + AP+yXgD/sl4A/7JeAP+yXgD/sl8A/7JfAP+yXgD/sV4A/7FeAP+yXgD/sl4A/7JeAP+yXgD/sl4A/7Je + AP+yXwD/sl8A/7JfAP+yXwD/sl4A/7JeAP+wXgD/rnEv/wAAAAAAAAAAAAAAAAAAAAAAAAAADJL0/wCL + 9f8AjPX/AIz2/wCM9f8AjPX/AIz1/wCM9f8AjPX/AIz2/wCM9v8AjPX/AIz1/wCI7v9tm87/v388/7Jf + A/+xXgD/sV0A/7JdAP+yXgD/s10A/7JdAP+zXgD/sl0A/7JdAP+yXgD/sl4A/7JeAP+yXQD/sl4A/7Je + AP+zXgD/sl4A/7JdAP+xXQD/sF4A/7FeAP+yXgD/sl0A/7JdAP+xXAD/rnAv/wAAAAAAAAAAAAAAAAAA + AAAAAAAACpH0/wCM9P8AjvT/AI70/wCO9f8AjvX/AI71/wCO9f8AjfT/AI70/wCO9P8AjvT/AI30/wCI + 7f9sm83/y5Vc/8B7Mf+/ey3/wHst/8B7LP/Aey3/wHou/8B6Lf/Beyz/wHss/8F8LP/BfCz/wXws/8B7 + LP/AfC3/wHwt/8B8LP/Aey3/wHou/8B6Lf/AfC3/wHwt/8B9Lf/AfCz/v3st/797LP+/eCz/vIdR/wAA + AAAAAAAAAAAAAAAAAAAAAAAANab0/yuj9f8spPT/LKP0/yuj9f8ro/X/K6L1/yyh9f8rovT/K6Pz/yyk + 9f8so/X/LKP0/yyf7/9/r9f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AA + AAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB + 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 + 9vUAfvf5AH32+QB+9/kAfvf5AH73+QB/9/kAfvb6AH72/gB/9v8Af/b/AH/2/wB+9v8Af/X/AH71/wB/ + 9f8Ae/T/XY/Q/6xnHf+kWAH/o1cA/6NZAP+kWAD/pFgA/6RYAP+kWAD/pFcA/6BbCv0AAAAAAAAAAAAA + AAAajfT/AH70+QGC9f8AgfT/AIL1/wCC9f8AgvX/AIL1/wCC9f8AgvX/AIL1/wCC9v8AgvX/AIL2/wCB + 9f8AgfX/AIL1/wB99P9dkND/rWcc/6VZAf+lWAD/plkA/6VaAP+mWQD/ploA/6VaAP+mWQD/oloG/gAA + AAAAAAAAAAAAAA6I8/8AgvX9AIX1/wCE9P8AhPb/AIT1/wCF9f8AhPX/AIX1/wCF9f8Ahfb/AIX1/wCF + 9v8Ahfb/AIX1/wCE9f8AhfX/AID0/1yR0P+uaBv/qFwA/6hbAP+oWgD/qFsA/6hbAP+nWwD/qFsA/6da + AP+nWwD/p18K/7RaAf+MZjn/CIXy/wCE9P8AhPP/AIT0/wCE9P8AhfX/AYT2/wGE9f8AhfX/AIX1/wCF + 9f8AhPb/AIT1/wCE9v8Ahfb/AIX1/wCF9v8AgfT/XJTQ/7BpHP+rXQL/ql0A/6tdAP+rXQD/q10B/6td + AP+sXQD/q10A/6tdAP6pXQH7sFkA+4tnPfwHhvL/AIT0/gCE8/8AhfX+AIX1/wCE9P0AgvH6AIT2+gCD + 9voAhfb+AIX2/wCF9f8Ahfb/AIX2/wCF9f8AhfX/AIX1/wCC9P9dk8//sWod/6xeAv+sXQD/rF0A/6xd + AP+sXgD/q14A/61dAP+tXgD/rF0A/6teA/+yWwD/jWk+/w+L8/8HifX/CIn0/wiK9f8HifT/CY35/w2U + //8bh/P/FI3z/wCG9P8AhvX/AIb1/wCG9f8Ah/b/AIf1/wCG9f8Ah/X/AIP0/12U0P+0bBz/r14B/65c + AP+tXAD/rl0A/65dAP+uXQD/rl0A/69dAP+uXAD/rlwA/7BcAP+mYRL/im9F/4hvRf+Kb0X/iW9F/Ihv + SP8AAAAAAAAAAAAAAAAAAAAABYrz/gCH9P8Aifb/AIn0/wCI9f8AiPT/AIn0/wCJ9P8AhfP/XJbR/7Vs + Hf+wXwL/sF8A/7BfAP+vXgD/r2AA/7BfAP+wYAD/sGAA/7BgAP+wXwD/sGAA/7FfAP+2XQD/t10A/7Zd + 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 + AAAAAAAACwAAACAgIAAgIDIALDM4ALBsaQCwbGkAKAAAAFdoaQBlAGUAzHVpAMx1aQAUAAAAAqWlpqcA + AAAAAACoqaqrrJ+Xl5igAAAAAAAAoaKdo6SWl5iYmQAAAAAAAJqbnJ2ejo+Pj5AAAAAAAACRkpOUlYaH + iIeJAAAAAAAAiouKjI15ent7fAB9fn+AgYKCg4SFbG1tbm8AcHFycnN0dXZ3eF5fYF9hYhpkZWVmZ2hp + amtQUVFRUlMaVVZXWFlaW1xdREVFRkVHSElKAABLTE1OTzc4ODk6Ozw9PgAAP0BBQkMAAAAAAAAAAAAA + AAAAAAAAIhoaGhoaAAAAAAAoKSorLBgaGhoaGgAAAAAAHh4fICEOGhoaGhoAAAAAABMUFRYXGhoaGhoa + AAAAAAAJCgsMDQfgAAAH4AAAB+AAAAfgAAAH4AAABAAAAAQAAAAAAAAAAAAAAABgAAAAYAAA//8AAAPg + AAAD4AAAA+AAAAPgAAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAlGU9/3tE + Bv9+QwD/fUIA/3pCAP96QwD/ekMA/3tCAP95QQD/ekEA/3pBAP95QQD/eUEA/3pAAP95SBL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAC2TL/wRdyv8FXsr/BF7K/wJfyv8DXcv/BFzL/wRdy/8EX8z/BF7M/wNdy/8DXcv/A13M/wRb + x/9uiL7/rXY//5hUBv+VUwD/lFIA/5ZTAP+VUwD/llIA/5dSAP+WUgD/llIA/5ZSAP+UUgD/lVIA/5VR + AP+SVhL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAADHb0/wBv9f8BcfT/AXH0/wFx9P8BcPT/AnD0/wFx9f8CcfT/AnD0/wFw + 9f8CcPT/A3H1/wRs7v9ujsz/rXY9/5hUBP+YUwD/l1MA/5hTAP+YUwD/mFMA/5lTAP+ZUwD/mVMA/5lT + AP+ZUwD/mVMA/5hSAP+TVxD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + 9v8AevX/AHr2/wF17/9uktD/sHg+/55XBv+gVwD/oFcA/6BWAP+gVgD/oFYA/6BWAP+gVgD/n1YA/6BW + AP+gVgD/oFYA/59WAP+aWhH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH/0/wB49f8AevX/AHr2/wB79v8Aevb/AHr2/wB6 + 9v8Ae/b/AHr2/wB69v8Aevb/AHv2/wB27/9tk8//tHk+/6FYBv+hVwD/oFcA/6BXAP+gVgD/oFcA/6BX + AP+gVwD/oFYA/6BWAP+gVwD/oFYA/6BWAP+bWhH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3/0/wB59f8Ae/b/AHv2/wB7 + 9v8Ae/b/AHv2/wB79v8Ae/b/AHv2/wB79v8Ae/b/AHv2/wF27/9tk87/tXk+/6JZBP+iVwD/oVgA/6JX + AP+iWAH/oVgA/6FZAP+iWAD/oVgA/6JYAP+iWAD/oVgB/6FWAP+cWxH/AAAAAAAAAAAAAAAAAAAAAFqf + 5P8mgNr/J4Lb/yaC2/8ngtv/J4Hc/yeC3P8ngtz/J4Lb/yeC2/8og9v/KIPc/ymC2/8fguL/Anz0/wB7 + 9f8AfPb/AHz2/wB89v8AfPb/AHz2/wB89v8AfPb/AHz2/wB89v8AfPX/AHz1/wF47/9uk8//tHk+/6JZ + Bv+iVwD/olgA/6NYAP+iWQD/o1kA/6NZAP+iWQH/o1gB/6JZAf+jWAD/o1kA/6JYAP+dWxH/AAAAAAAA + AAAAAAAAAAAAAD6d9f8Aevb/AHz2/wB89v8AfPf/AHz3/wB89/8AfPf/AHz2/wB89v8AfPb/AHz2/wB9 + 9v8AfPb/AH31/wB99f8Affb/AH32/wB99v8Affb/AH72/wB99v8Affb/AH32/wB+9v8AffX/AX31/wN5 + 7/9uk8//tXo+/6NZBv+jWAD/o1gA/6NYAf+iWAH/olkA/6NZAP+iWQD/olkA/6JYAP+jWAD/o1gB/6JX + AP+dWxH/AAAAAAAAAAAAAAAAAAAAAECe9f8AfPT/AH/1/wB/9v8Af/b/AH/2/wB+9v8Af/b/AH72/wB/ + 9v8Af/b/AH/2/wB/9v8Afvb/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/ + 9v8Af/X/AH/1/wF77/9ulM7/tno+/6RbBv+lWQD/pFgA/6RZAf+kWQH/pFgB/6RZAf+kWQH/pFkB/6RY + Af+kWAH/pFkB/6NYAP+dXBD/AAAAAAAAAAAAAAAAAAAAAECf9f8AfPX/AH/1/wB/9v8Af/b/AH/2/wB/ + 9v8AgPb/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AID2/wCA9v8Af/b/AH/2/wB/ + 9v8Af/b/AID2/wB/9v8AgPb/AID2/wB87/9tlM7/t3o+/6VbBv+lWQD/pVgA/6RZAP+kWQD/pFkA/6VY + AP+lWQD/pVkA/6VZAP+lWQD/pVgA/6VZAP+fXRH/AAAAAAAAAAAAAAAAAAAAAECg9f8Af/X/AIL1/wCC + 9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC + 9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8AgvX/AYH1/wJ97/9ulc7/t3s+/6ZbBP+lWQD/pVkA/6VZ + AP+lWQD/pVkA/6VZAP+mWQD/plkA/6ZZAP+mWQD/pVkA/6VZAP+gXhH/AAAAAAAAAAAAAAAAAAAAAECi + 9v8AgfT/AIP1/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE + 9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPX/AIT1/wF+7/9tlc3/t3s+/6db + Bf+mWgD/ploA/6daAP+nWwD/p1sA/6dbAP+nWwD/p1sA/6dbAP+nWwD/p1oA/6haAP+hWwr/AAAAAAAA + AAAAAAAAAAAAADaP2v8AhPf/AIX1/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIb2/wCG + 9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCA + 7v9tmM7/uXs+/6hdBP+oXAD/qFwA/6hbAP+oWwD/qFsA/6hbAP+oWwD/qFsA/6hbAP+oWwD/qFsA/6db + AP+nWwD/pFgA/6NWAP+jVgD/oFkL/zOAwv8Ahvj/AIX1/wCF9v8Ahfb/AIX2/wCF9v8Ahvb/AIb2/wCF + 9v8Ahfb/AIX2/wCF9v8Ahfb/AIb2/wCG9v8Ahfb/AIX2/wCF9v8Ahfb/AIX2/wCF9v8Ahfb/AIb2/wCF + 9v8Ahfb/AIX2/wCB7v9tmM7/unw9/6ldBP+qXQD/ql0A/6pcAP+qXQD/ql0B/6pdAf+qXQH/ql0B/6pd + Af+qXQH/qV0A/6ldAP+rXgD/q14B/6tdAP+rXQD/qV8P/zSCw/8Ah/j/AIb1/wCG9f8Ahvb/AIb2/wCG + 9v8Ahvb/AIb2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIb2/wCF9v8Ahfb/AIX2/wCF + 9v8Ahfb/AIb2/wCG9v8Ahfb/AIb2/wGB7v9tmc3/un49/6xeBv+sXgH/rF4B/6xeAf+tXgD/rV4A/6xe + Af+tXgH/rF8B/61eAP+tXgH/rV4B/61fAf+tXgH/rF4B/61eAf+sXgD/q18P/zWCw/8Ah/j/AIf1/wCH + 9f8Ah/X/AIf1/wCH9v8Ah/b/AIf2/wCH9v8Ahvb/AIb2/wCG9v8Ah/b/AIb2/wCG9v8Ahvb/AIb2/wCG + 9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIf2/wGC7v9tmM3/u30+/6xfBv+tXwH/rV4A/61e + AP+sXgD/rV4A/61eAf+tXgH/rV4A/61eAf+tXgD/rV4B/61eAP+tXgH/rV4B/61eAf+tXQH/q2AR/zOD + xf8Ah/r/AIf3/wCH9/8Ah/f/AIf3/wCH9/8Ah/f/AIf3/wCG9f8AhfX/AIT1/wCE9f8AhfT/AIf1/wCI + 9v8Ah/b/AIf2/wCH9v8AiPb/AIf2/wCH9v8AiPb/AIf2/wCH9v8AiPX/AIn2/wKD7v9tmc7/vH4+/61f + Bf+tXgD/rV4A/61eAP+tXgD/rV4A/61eAP+tXgD/rV4A/61eAP+uXgD/rV4A/65eAP+tXgD/rl4A/61e + AP+uXQH/rGAO/1eEnv80isr/NYnI/zWJyP81icj/NYrI/zSKyP81icf/NI3P/0Gl8P9DpvP/Qqbz/0Sm + 8v83oPP/BYn0/wCG9f8AiPb/AIj2/wCI9v8AiPb/AIj2/wCI9v8AiPb/AIj2/wCI9v8AiPX/AIj2/wGE + 7/9tms7/vYA+/7BgBP+wXgD/sF4A/69dAP+vXQD/sF0A/69dAP+wXQD/r10A/69dAP+wXQD/sF0A/7Bd + AP+vXQD/sF0A/7BdAP+wXgH/r14C/6piEP+pZRP/qWUT/6plE/+qZRP/qWUT/6llE/+qZBP/pnY//wAA + AAAAAAAAAAAAAAAAAAAAAAAADY/0/wCI9f8Aivb/AIr2/wCL9v8Aivb/AIr2/wCK9v8Aivb/AIr2/wCL + 9v8AivX/AIr2/wGF7v9tms7/vn4+/7BgBf+wXwD/sF4A/7BfAP+wXwD/sF8A/69fAP+wXwD/sF8A/7Bf + AP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXgD/sF4A/7Bf + AP+wXAD/rW8v/wAAAAAAAAAAAAAAAAAAAAAAAAAAC5D0/wCJ9f8Aivb/AIr2/wCL9v8Ai/b/AIr2/wCK + 9v8Aivb/AIv2/wCK9v8Ai/X/AYr2/wGH7/9tm8//vn4+/7BfBf+xXwD/sV8A/7FgAP+xYAD/sWAA/7Fg + AP+wYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7Fg + AP+xYAD/sWAA/7FfAP+wXgD/rXAw/wAAAAAAAAAAAAAAAAAAAAAAAAAADJD0/wCK9f8Ai/b/AIr2/wCL + 9v8Ai/b/AIr2/wCK9v8Aivb/AIv2/wCK9v8AivX/AIr2/wGI7/9tnM//wIA+/7NgBf+yXgD/sl4A/7Je + AP+yXgD/sl4A/7JeAP+yXgD/sl8A/7JfAP+yXgD/sV4A/7FeAP+yXgD/sl4A/7JeAP+yXgD/sl4A/7Je + AP+yXwD/sl8A/7JfAP+yXwD/sl4A/7JeAP+wXgD/rnEv/wAAAAAAAAAAAAAAAAAAAAAAAAAADJL0/wCL + 9f8AjPX/AIz2/wCM9f8AjPX/AIz1/wCM9f8AjPX/AIz2/wCM9v8AjPX/AIz1/wCI7v9tm87/v388/7Jf + A/+xXgD/sV0A/7JdAP+yXgD/s10A/7JdAP+zXgD/sl0A/7JdAP+yXgD/sl4A/7JeAP+yXQD/sl4A/7Je + AP+zXgD/sl4A/7JdAP+xXQD/sF4A/7FeAP+yXgD/sl0A/7JdAP+xXAD/rnAv/wAAAAAAAAAAAAAAAAAA + AAAAAAAACpH0/wCM9P8AjvT/AI70/wCO9f8AjvX/AI71/wCO9f8AjfT/AI70/wCO9P8AjvT/AI30/wCI + 7f9sm83/y5Vc/8B7Mf+/ey3/wHst/8B7LP/Aey3/wHou/8B6Lf/Beyz/wHss/8F8LP/BfCz/wXws/8B7 + LP/AfC3/wHwt/8B8LP/Aey3/wHou/8B6Lf/AfC3/wHwt/8B9Lf/AfCz/v3st/797LP+/eCz/vIdR/wAA + AAAAAAAAAAAAAAAAAAAAAAAANab0/yuj9f8spPT/LKP0/yuj9f8ro/X/K6L1/yyh9f8rovT/K6Pz/yyk + 9f8so/X/LKP0/yyf7/9/r9f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk + AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY + 9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AA + AAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB + //+AAAAAAAH//4AAAAAAAf//gAAAAAAB4AAAAAAAAAHgAAAAAAAAAeAAAAAAAAAB4AAAAAAAAAHgAAAA + AAAAAeAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AA+AAAAAAAAAD4AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAD4AAAAAAAAAPgAAAAP///////wAA//////// + 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 + 9f8AgfX/AIL1/wB99P9dkND/rWcc/6VZAf+lWAD/plkA/6VaAP+mWQD/ploA/6VaAP+mWQD/oloG/gAA + AAAAAAAAAAAAAA6I8/8AgvX9AIX1/wCE9P8AhPb/AIT1/wCF9f8AhPX/AIX1/wCF9f8Ahfb/AIX1/wCF + 9v8Ahfb/AIX1/wCE9f8AhfX/AID0/1yR0P+uaBv/qFwA/6hbAP+oWgD/qFsA/6hbAP+nWwD/qFsA/6da + AP+nWwD/p18K/7RaAf+MZjn/CIXy/wCE9P8AhPP/AIT0/wCE9P8AhfX/AYT2/wGE9f8AhfX/AIX1/wCF + 9f8AhPb/AIT1/wCE9v8Ahfb/AIX1/wCF9v8AgfT/XJTQ/7BpHP+rXQL/ql0A/6tdAP+rXQD/q10B/6td + AP+sXQD/q10A/6tdAP6pXQH7sFkA+4tnPfwHhvL/AIT0/gCE8/8AhfX+AIX1/wCE9P0AgvH6AIT2+gCD + 9voAhfb+AIX2/wCF9f8Ahfb/AIX2/wCF9f8AhfX/AIX1/wCC9P9dk8//sWod/6xeAv+sXQD/rF0A/6xd + AP+sXgD/q14A/61dAP+tXgD/rF0A/6teA/+yWwD/jWk+/w+L8/8HifX/CIn0/wiK9f8HifT/CY35/w2U + //8bh/P/FI3z/wCG9P8AhvX/AIb1/wCG9f8Ah/b/AIf1/wCG9f8Ah/X/AIP0/12U0P+0bBz/r14B/65c + AP+tXAD/rl0A/65dAP+uXQD/rl0A/69dAP+uXAD/rlwA/7BcAP+mYRL/im9F/4hvRf+Kb0X/iW9F/Ihv + SP8AAAAAAAAAAAAAAAAAAAAABYrz/gCH9P8Aifb/AIn0/wCI9f8AiPT/AIn0/wCJ9P8AhfP/XJbR/7Vs + Hf+wXwL/sF8A/7BfAP+vXgD/r2AA/7BfAP+wYAD/sGAA/7BgAP+wXwD/sGAA/7FfAP+2XQD/t10A/7Zd + AP+3XAD6tV0A/wAAAAAAAAAAAAAAAAAAAAAHjfT9AIn1/wCK9v8AivX/AIn2/wCK9f8AivX/AIr1/wCH + 9P9dl9L/tWkY+69bAPuvWgD7sFsA+7BbAPuwWwD7sFsA+7BbAPuvWwD7r1sA+7BbAPuvWwD7sFsA+65c + APuuXAD7rV0A+65bAPesXQP7AAAAAAAAAAAAAAAAAAAAAAKM9PoAiPT7AIn1+wCI9PsAifT7AIn1+wCI + 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 + + + \ No newline at end of file diff --git a/UDPClient/Program.cs b/UDPClient/Program.cs new file mode 100644 index 0000000..844b970 --- /dev/null +++ b/UDPClient/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace UDPClient +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Frm_Client()); + } + } +} diff --git a/UDPClient/Properties/AssemblyInfo.cs b/UDPClient/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..984309e --- /dev/null +++ b/UDPClient/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("UDPClient")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("UDPClient")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("c935c2b8-6abd-4b98-97e2-ffa7b0e202ae")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UDPClient/Properties/Resources.Designer.cs b/UDPClient/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4f1d9e7 --- /dev/null +++ b/UDPClient/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18444 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace UDPClient.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UDPClient.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/UDPClient/Properties/Resources.resx b/UDPClient/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/UDPClient/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UDPClient/Properties/Settings.Designer.cs b/UDPClient/Properties/Settings.Designer.cs new file mode 100644 index 0000000..60e2531 --- /dev/null +++ b/UDPClient/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18444 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace UDPClient.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/UDPClient/Properties/Settings.settings b/UDPClient/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/UDPClient/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/UDPClient/UDPClient.csproj b/UDPClient/UDPClient.csproj new file mode 100644 index 0000000..851c010 --- /dev/null +++ b/UDPClient/UDPClient.csproj @@ -0,0 +1,96 @@ + + + + + Debug + AnyCPU + {69C59230-BE16-4E03-8948-664F78D85698} + Exe + Properties + UDPClient + UDPClient + v3.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + UDPClient.Program + + + + + + + + + + + + + + + Form + + + Frm_Client.cs + + + + + Frm_Client.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + Always + + + Always + + + + + \ No newline at end of file diff --git a/UDPClient/clear.ico b/UDPClient/clear.ico new file mode 100644 index 0000000..f057ac9 Binary files /dev/null and b/UDPClient/clear.ico differ diff --git a/UDPClient/icon.ico b/UDPClient/icon.ico new file mode 100644 index 0000000..b7ec715 Binary files /dev/null and b/UDPClient/icon.ico differ diff --git a/UDPServer/Frm_Server.Designer.cs b/UDPServer/Frm_Server.Designer.cs new file mode 100644 index 0000000..8b95cd7 --- /dev/null +++ b/UDPServer/Frm_Server.Designer.cs @@ -0,0 +1,120 @@ +namespace UDPServer +{ + partial class Frm_Server + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.msg = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.msgbox = new System.Windows.Forms.ListBox(); + this.label1 = new System.Windows.Forms.Label(); + this.portT = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // msg + // + this.msg.Location = new System.Drawing.Point(71, 39); + this.msg.Name = "msg"; + this.msg.Size = new System.Drawing.Size(161, 21); + this.msg.TabIndex = 0; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(238, 39); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(42, 23); + this.button1.TabIndex = 1; + this.button1.Text = "广播"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button_Click); + // + // msgbox + // + this.msgbox.FormattingEnabled = true; + this.msgbox.ItemHeight = 12; + this.msgbox.Location = new System.Drawing.Point(12, 77); + this.msgbox.Name = "msgbox"; + this.msgbox.Size = new System.Drawing.Size(268, 184); + this.msgbox.TabIndex = 2; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 42); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 3; + this.label1.Text = "消 息"; + // + // portT + // + this.portT.Location = new System.Drawing.Point(71, 12); + this.portT.Name = "portT"; + this.portT.Size = new System.Drawing.Size(161, 21); + this.portT.TabIndex = 4; + this.portT.Text = "25333"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 15); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 5; + this.label2.Text = "广播端口"; + // + // Frm_Server + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 273); + this.Controls.Add(this.label2); + this.Controls.Add(this.portT); + this.Controls.Add(this.label1); + this.Controls.Add(this.msgbox); + this.Controls.Add(this.button1); + this.Controls.Add(this.msg); + this.Name = "Frm_Server"; + this.Text = "服务端"; + this.Load += new System.EventHandler(this.Frm_Server_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox msg; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListBox msgbox; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox portT; + private System.Windows.Forms.Label label2; + } +} + diff --git a/UDPServer/Frm_Server.cs b/UDPServer/Frm_Server.cs new file mode 100644 index 0000000..38f7a66 --- /dev/null +++ b/UDPServer/Frm_Server.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace UDPServer +{ + public partial class Frm_Server : Form + { + UdpClient client; + IPEndPoint endpoint; + Dictionary userinfo = new Dictionary(); + public Frm_Server() + { + InitializeComponent(); + } + + private void Frm_Server_Load(object sender, EventArgs e) + { + client = new UdpClient(new IPEndPoint(IPAddress.Any, 25433)); + endpoint = new IPEndPoint(IPAddress.Any, 0); + //启动客户端监听 + Thread t = new Thread(new ThreadStart(ClientThread)); + t.Start(); + + } + + + private void button_Click(object sender, EventArgs e) + { + + foreach (var item in userinfo) + { + byte[] buf = Encoding.Default.GetBytes("用户: " + item.Key + " 消息: " + msg.Text); + client.Send(buf, buf.Length, item.Value); + } + } + + private void ClientThread() + { + try + { + Console.WriteLine("服务器开始监听..."); + while (true) + { + byte[] buf = client.Receive(ref endpoint); + string msg = Encoding.Default.GetString(buf); + string[] info = msg.Split(' '); + if (info.Length == 3) + { + string user = info[0]; + string ip = info[1]; + int port = int.Parse(info[2]); + IPEndPoint addr = new IPEndPoint(IPAddress.Parse(ip), port); + if (userinfo.ContainsKey(user)) + userinfo.Remove(user); + userinfo.Add(user, addr); + Console.WriteLine("用户: " + user + " 登录服务器 IP: " + ip + " 端口: " + port); + } + } + } + catch (Exception) + { + client.Close(); + } + + } + } +} diff --git a/UDPServer/Frm_Server.resx b/UDPServer/Frm_Server.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/UDPServer/Frm_Server.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UDPServer/Program.cs b/UDPServer/Program.cs new file mode 100644 index 0000000..c6ce2e8 --- /dev/null +++ b/UDPServer/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace UDPServer +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Frm_Server()); + } + } +} diff --git a/UDPServer/Properties/AssemblyInfo.cs b/UDPServer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..79d0b26 --- /dev/null +++ b/UDPServer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("UDPServer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("UDPServer")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("29696ad1-c357-4e2d-aab6-1a1a138696c2")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UDPServer/Properties/Resources.Designer.cs b/UDPServer/Properties/Resources.Designer.cs new file mode 100644 index 0000000..139985a --- /dev/null +++ b/UDPServer/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18444 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace UDPServer.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UDPServer.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/UDPServer/Properties/Resources.resx b/UDPServer/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/UDPServer/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UDPServer/Properties/Settings.Designer.cs b/UDPServer/Properties/Settings.Designer.cs new file mode 100644 index 0000000..bbd00b0 --- /dev/null +++ b/UDPServer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18444 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace UDPServer.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/UDPServer/Properties/Settings.settings b/UDPServer/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/UDPServer/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/UDPServer/UDPServer.csproj b/UDPServer/UDPServer.csproj new file mode 100644 index 0000000..9c7acc7 --- /dev/null +++ b/UDPServer/UDPServer.csproj @@ -0,0 +1,88 @@ + + + + + Debug + AnyCPU + {3776C1C2-B676-458C-8EC8-4380892FB1E0} + Exe + Properties + UDPServer + UDPServer + v3.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + UDPServer.Program + + + + + + + + + + + + + + + Form + + + Frm_Server.cs + + + + + Frm_Server.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + \ No newline at end of file diff --git a/clear.ico b/clear.ico new file mode 100644 index 0000000..f057ac9 Binary files /dev/null and b/clear.ico differ diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000..b7ec715 Binary files /dev/null and b/icon.ico differ