コード例 #1
0
        /// <summary>
        /// 循环运行,监听广播消息,接收到了就保存起来,同时返回自己的消息
        /// </summary>
        private void run()
        {
            Socket     sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint iep  = new IPEndPoint(IPAddress.Any, port);

            sock.Bind(iep);
            EndPoint ep = (EndPoint)iep;

            log.Info("Broadcast Ready to receive…");
            while (flag)
            {
                try
                {
                    byte[] data       = new byte[1024];
                    int    recv       = sock.ReceiveFrom(data, ref ep);
                    string stringData = Encoding.UTF8.GetString(data, 0, recv);


                    BroadInfo phone = JsonConvert.DeserializeObject <BroadInfo>(stringData);

                    foreach (BroadParam bp in phone.param)
                    {
                        if (bp.launch_time_id == null)
                        {
                            continue;
                        }
                        //log.InfoFormat("received: {0} from: {1}", stringData, ep.ToString());
                        Socket phoneSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                        phoneSocket.Connect(new IPEndPoint(IPAddress.Parse(bp.ip), bp.port));
                        BroadParam pp = new BroadParam();
                        pp.name           = Environment.MachineName;
                        pp.ip             = GetInternalIP();
                        pp.mac            = MyInfo.myMAC;
                        pp.port           = ConfigResource.MYSERVER_PORT;
                        pp.launch_time_id = MyInfo.launch_time_id;
                        List <BroadParam> param = new List <BroadParam>();
                        param.Add(pp);
                        BroadInfo info = new BroadInfo(param, "PC_Y", "default");
                        phoneSocket.Send(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(info)));
                        //log.Info("返回手机信息: " + JsonConvert.SerializeObject(info));

                        phoneSocket.Close();
                        int len = MyInfo.phone.Count;
                        if (len >= 50)
                        {
                            MyInfo.phone.Clear();
                            continue;
                        }
                        MyInfo.phone.Add(bp);
                    }
                }
                catch (SocketException e)
                {
                    log.Error("广播错误", e);
                }
            }
        }
コード例 #2
0
        //处理手机发送过的tv信息,保存起来.
        public void FuncMSG(string msg)
        {
            BroadInfo phone = JsonConvert.DeserializeObject <BroadInfo>(msg);

            foreach (BroadParam b in phone.param)
            {
                if (!MyInfo.tvs.Contains(b))
                {
                    MyInfo.tvs.Add(b);
                }
                info.tv.TVInfo tv = new info.tv.TVInfo(b.launch_time_id, b.name, b.launch_time_id, b.ip, false, false, false);
                tv.timeStamp = tv.timeStamp = function.tv.TVFunction.ConvertDateTimeInt(DateTime.Now);
                if (!MyInfo.tvLibrary.value.Contains(tv))
                {
                    MyInfo.tvLibrary.value.Add(tv);
                }
            }
        }