日期:2014-05-18 浏览次数:21047 次
try { byte[] data = new byte[1024]; string msg; //构建UDP服务器 // Console.WriteLine("This is a Client, host name is {0}", Dns.GetHostName()); //设置服务IP,设置UDP端口号 //定义网络类型,数据连接类型和网络协议UDP string welcome = "L" + UserHelper.loginUser.id.ToString(); data = Encoding.UTF8.GetBytes(welcome); sokClient.SendTo(data, data.Length, SocketFlags.None, ipep); byte[] arrMsg2 = System.Text.Encoding.UTF8.GetBytes("H"+UserHelper.loginUser.id.ToString()); sokClient.SendTo(arrMsg2, arrMsg2.Length, SocketFlags.None,ipep); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)sender; data = new byte[1024]; //对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制 //server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100); int recv = sokClient.ReceiveFrom(data, ref Remote); Console.WriteLine(" from {0}: ", Remote.ToString()); Console.WriteLine(Encoding.UTF8.GetString(data, 0, recv)); while (true) { //server.SendTo(Encoding.UTF8.GetBytes("ok"), Remote); data = new byte[1024]; recv = sokClient.ReceiveFrom(data, ref Remote); msg = Encoding.UTF8.GetString(data, 0, recv); if (msg.Length > 0) { string headCommand = msg.Substring(0, 1); switch (headCommand) { case "N": string content = msg.Substring(1); //MsgNewsForm mnf = new MsgNewsForm(content); // MsgPresentationManage.GetInstance().AddMsgNewsForm(mnf); MessageBox.Show(msg); break; case "M": string sendUserId = msg.Substring(1); OAUsers user = userBLL.GetModel(int.Parse(sendUserId)); UserHelper.SendUserName = user.userName; timerSend.Enabled = true; timerSend.Start(); notifyIcon1.Icon = PPSoft.Properties.Resources._1; break; case "H": string heartUserId = msg.Substring(1); Console.WriteLine(heartUserId + "发来的心跳包"); break; default: break; } } Console.WriteLine(msg); } } catch (Exception ex) { }