예제 #1
0
 /// <summary>
 /// 根据输入状态选择相应的连接模式
 /// </summary>
 private void UPNPStartServer()
 {
     if (isTcpRun == false)
     {
         bool state = false;
         if (radioClient.IsChecked == true)
         {
             linkMode = LinkNetMode.TcpClient;
         }
         else if (true == checkIsSub.IsChecked) //使用UNPN绑定
         {
             linkMode = LinkNetMode.UPNPServer;
         }
         else
         {
             linkMode = LinkNetMode.TcpServer;
         }
         state = NetUPNPInit(linkMode);
         if (state)
         {
             checkIsSub.IsEnabled = false;
             UpdateInputStateLink();
         }
     }
 }
예제 #2
0
        /// <summary>
        /// UNPN初始化
        /// </summary>
        /// <param name="state">true 为路由绑定, false 为 普通模式</param>
        /// <returns>成功为true</returns>
        bool NetUPNPInit(LinkNetMode state)
        {
            try
            {
                if (upnpServer != null)
                {
                    throw new Exception("upnpServer 不为空,不能建立重复连接,必须首先断开");
                }
                //txtLinkMsg.Text = "";

                ip = getIP();
                int port = int.Parse(txtPort.Text);

                if (state == LinkNetMode.UPNPServer)
                {
                    txtLinkMsg.Text += "UPnp Server is running ... \n";
                    txtLinkMsg.ScrollToEnd();
                    upnpServer = new UpnpServer(port, port);
                    //作为服务器端,产生数据
                    // serialControlCenter.RtuFrameArrived += tcpTransmission_RtuFrameArrived;
                }
                else if (state == LinkNetMode.TcpServer)
                {
                    txtLinkMsg.Text += "TcpServer is running ... \n";
                    txtLinkMsg.ScrollToEnd();
                    upnpServer = new UpnpServer(ip, port);
                    //作为服务器端,产生数据
                    // serialControlCenter.RtuFrameArrived += tcpTransmission_RtuFrameArrived;
                }
                else if (state == LinkNetMode.TcpClient)
                {
                    txtLinkMsg.Text += "TcpClient is running ... \n";
                    txtLinkMsg.ScrollToEnd();
                    upnpServer = new UpnpServer(ip, port, false);
                }
                upnpServer.NetDataArrayArrived += NetData_Arrived;

                upnpServer.ExceptionArrived += Exception_TestArrived;
                upnpServer.LinkingMsg       += LinkMsg_TestArrived;


                return(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "UPNP net初始化");
                return(false);
            }
        }