Exemple #1
0
        //TCP/IP连接
        private void btnConnect_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(reciveAndListener);

            thread.IsBackground = true;
            thread.Priority     = ThreadPriority.AboveNormal;
            if (btnConnect.Text == "侦听")
            {
                if (txtIP.Text.Trim() == string.Empty)
                {
                    return;
                }
                if (txtPort.Text.Trim() == string.Empty)
                {
                    return;
                }
                //如果线程绑定的方法带有参数的话,那么这个参数的类型必须是object类型,所以讲ip,和端口号 写成一个结构体进行传递
                IpAndPort ipHePort = new IpAndPort();
                ipHePort.Ip   = txtIP.Text;
                ipHePort.Port = txtPort.Text;
                thread.Start((object)ipHePort);
                btnConnect.Text = "关闭";
            }
            else
            {
                thread.Abort();
                server.Stop();
                btnConnect.Text = "侦听";
                OutputMessage("服务端关闭");
            }
        }
Exemple #2
0
        internal static Boolean IsPortOccupedFun2(Int32 port, IpAndPort m_PortList)
        {
            System.Net.NetworkInformation.IPGlobalProperties iproperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
            System.Net.IPEndPoint[] ipEndPoints = iproperties.GetActiveTcpListeners();

            if (!PortList.Contains(m_PortList.port))
            {
                PortList.Add(m_PortList.port);
                IpAndPortList.Add(m_PortList);
            }
            foreach (var item in ipEndPoints)
            {
                if (item.Port == Convert.ToInt32(m_PortList.port))
                {
                    foreach (IpAndPort ipPort in IpAndPortList)
                    {
                        if (ipPort.ip.Equals(m_PortList.ip) && ipPort.port.Equals(m_PortList.port))
                        {
                            return(false);
                        }
                    }
                    return(true);
                }
            }
            return(false);
        }
Exemple #3
0
        private void switch_Click(object sender, RoutedEventArgs e)
        {
            if (IPAdressTextBox.Text.Trim() == string.Empty)
            {
                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "请填入服务器IP地址\n");
                return;
            }
            if (PortTextBox.Text.Trim() == string.Empty)
            {
                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "请填入服务器端口号\n");
                return;
            }
            Thread    thread   = new Thread(reciveAndListener);
            IpAndPort ipHePort = new IpAndPort();

            ipHePort.Ip   = IPAdressTextBox.Text;
            ipHePort.Port = PortTextBox.Text;
            thread.Start((object)ipHePort);

            Thread thread_emg = new Thread(reciveAndListener_EMG);

            IpAndPort ipPort_emg = new IpAndPort();

            ipPort_emg.Ip   = IPAdressTextBox.Text;
            ipPort_emg.Port = "4485";
            thread_emg.Start((object)ipPort_emg);
        }
Exemple #4
0
        private void Switch_Button_Click(object sender, RoutedEventArgs e) //启动服务器
        {
            Button bt = sender as Button;

            IpAndPort ipAndport = new IpAndPort();

            ipAndport.Ip   = IPAdressTextBox.Text;
            ipAndport.Port = PortTextBox.Text;

            if (bt.Content.ToString() == "启动服务器")
            {
                if (IPAdressTextBox.Text.Trim() == string.Empty)
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "请填入服务器IP地址\n");
                    return;
                }
                if (PortTextBox.Text.Trim() == string.Empty)
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "请填入服务器端口号\n");
                    return;
                }

                // 测试labview简单加法
                //double z = Add(21.0, 3.0);
                //ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "Labview加法器传来结果:" + z.ToString() + "\n");

                try
                {
                    if ((thread.ThreadState == ThreadState.Aborted))
                    {
                        thread = new Thread(reciveAndListener);
                        thread.IsBackground = true;
                    }
                    if (thread.ThreadState == (ThreadState.Unstarted | ThreadState.Background))
                    {
                        isOpen = true;
                        thread.Start((object)ipAndport);
                    }

                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务器 " + ipAndport.Ip + " : " + ipAndport.Port + " 已开启监听\n");
                    statusInfoTextBlock.Text = "服务器已启动";
                }
                catch
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务器打开失败");
                    statusInfoTextBlock.Text = "服务器打开失败";
                }

                bt.Content = "关闭服务器";
            }

            else
            {
                isOpen = false;
                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务器 " + ipAndport.Ip + " : " + ipAndport.Port + " 已关闭\n");
                statusInfoTextBlock.Text = "服务器已关闭";
                bt.Content = "启动服务器";
            }
        }
Exemple #5
0
        static void reciveAndListener(object ipAndPort)
        {
            IpAndPort ipHePort = (IpAndPort)ipAndPort;

            IPAddress ip = IPAddress.Parse(ipHePort.Ip);

            server = new TcpListener(ip, int.Parse(ipHePort.Port));
            server.Start();//启动监听
            Console.WriteLine("服务端开启侦听....");
            lianjie(usercout++);
        }
Exemple #6
0
        private void reciveAndListener(object ipAndPort)
        {
            IpAndPort ipHePort = (IpAndPort)ipAndPort;
            IPAddress ip       = IPAddress.Parse(ipHePort.Ip);

            server = new TcpListener(ip, int.Parse(ipHePort.Port));
            server.Start();//启动监听
            OutputMessage("服务端开启侦听....");
            //  btnStart.IsEnabled = false;

            //获取连接的客户端对象 2个
            client = server.AcceptTcpClient();
            OutputMessage("有客户端1请求连接,连接已建立!");
            client1 = server.AcceptTcpClient();
            OutputMessage("有客户端2请求连接,连接已建立!");
            //获得流
            NetworkStream reciveStream  = client.GetStream();
            NetworkStream reciveStream1 = client1.GetStream();

            TimeSpan ts;

            ts = System.DateTime.Now.Subtract(DateTime.Parse("1980-1-6"));
            IPDATABYTESEND.wn  = 1965;
            IPDATABYTESEND.sow = 345600000 + 190;

            #region 循环监听客户端发来的信息
            do
            {
                byte[] buffer = new byte[bufferSize];
                int    msgSize;
                try
                {
                    lock (reciveStream)
                    {
                        msgSize = reciveStream.Read(buffer, 0, bufferSize);
                    }
                    if (msgSize == 0)
                    {
                        return;
                    }
                    Formatting_Data();
                }
                catch
                {
                    OutputMessage("出现异常:连接被迫关闭");
                    break;
                }
            } while (btnConnect.Text == "关闭");

            #endregion
        }
Exemple #7
0
        static void Main(string[] args)
        {
            mycon.Open();
            IpAndPort ipHePort = new IpAndPort();

            //           ipHePort.Ip = IPAddress.Parse("172.19.21.27").ToString();
            ipHePort.Ip   = IPAddress.Parse("127.0.0.1").ToString();
            ipHePort.Port = port.ToString();
            Console.WriteLine("ip地址:{0}", ipHePort.Ip);
            Console.WriteLine("端口号:{0}", ipHePort.Port);
            Thread thread = new Thread(reciveAndListener);

            thread.Start((object)ipHePort);
        }
Exemple #8
0
        private void reciveAndListener(object ipAndPort)
        {
            IpAndPort ipHePort = (IpAndPort)ipAndPort;

            IPAddress ip = IPAddress.Parse(ipHePort.Ip);

            server = new TcpListener(ip, int.Parse(ipHePort.Port));
            server.Start();//启动监听

            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "Server starts listening...\n");

            //获取连接的客户d端的对象
            client = server.AcceptTcpClient();
            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "Client requests connection. Connection established!\n");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步

            //获得流
            NetworkStream reciveStream = client.GetStream();

            //外骨骼上位机发来连接请求后开始执行图像识别
            Write_Flag = true;

            do
            {
                byte[] buffer = new byte[bufferSize];
                int    msgSize;
                try
                {
                    lock (reciveStream)
                    {
                        msgSize = reciveStream.Read(buffer, 0, bufferSize);
                    }

                    if (msgSize == 0)
                    {
                        //获取连接的客户d端的对象
                        client = server.AcceptTcpClient();
                        //ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步
                        reciveStream = client.GetStream();
                        continue;
                    }
                    string msg = Encoding.Default.GetString(buffer, 0, bufferSize);
                    ComWinTextBox.Dispatcher.Invoke(new showData(ReceiveTextBox.AppendText), Encoding.Default.GetString(buffer, 0, msgSize) + "\n");
                }
                catch
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n An exception has occurred: the connection was forced to close");
                    break;
                }
            } while (true);
        }
Exemple #9
0
        private void reciveAndListener(object ipAndPort)
        {
            IpAndPort ipHePort = (IpAndPort)ipAndPort;

            IPAddress ip = IPAddress.Parse(ipHePort.Ip);

            server = new TcpListener(ip, int.Parse(ipHePort.Port));
            server.Start();//启动监听

            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务端开启侦听....\n");

            //获取连接的客户d端的对象
            client = server.AcceptTcpClient();
            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步

            //获得流
            NetworkStream reciveStream = client.GetStream();

            #region 循环监听客户端发来的信息
            do
            {
                byte[] buffer = new byte[bufferSize];
                int    msgSize;
                try
                {
                    lock (reciveStream)
                    {
                        msgSize = reciveStream.Read(buffer, 0, bufferSize);
                    }

                    if (msgSize == 0)
                    {
                        return;
                    }
                    string msg = Encoding.Default.GetString(buffer, 0, bufferSize);
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n客户端曰:" +
                                                    Encoding.Default.GetString(buffer, 0, msgSize));
                }
                catch
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n 出现异常:连接被迫关闭");
                    break;
                }
            } while (true);
            #endregion
        }
Exemple #10
0
        private void switch_Click(object sender, RoutedEventArgs e)
        {
            switch_Button.IsEnabled = false;

            if (IPAdressTextBox.Text.Trim() == string.Empty)
            {
                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "Please enter the server IP address\n");
                return;
            }
            if (PortTextBox.Text.Trim() == string.Empty)
            {
                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "Please enter the server port\n");
                return;
            }
            Thread    thread   = new Thread(reciveAndListener);
            IpAndPort ipHePort = new IpAndPort();

            ipHePort.Ip   = IPAdressTextBox.Text;
            ipHePort.Port = PortTextBox.Text;
            thread.Start((object)ipHePort);
        }
        private void Switch_Button_Click(object sender, RoutedEventArgs e) //启动服务器
        {
            Button bt = sender as Button;

            IpAndPort ipAndport = new IpAndPort();

            ipAndport.Ip   = IPAdressTextBox.Text;
            ipAndport.Port = PortTextBox.Text;

            if (bt.Content.ToString() == "启动服务器")
            {
                if (IPAdressTextBox.Text.Trim() == string.Empty)
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "请填入服务器IP地址\n");
                    return;
                }
                if (PortTextBox.Text.Trim() == string.Empty)
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "请填入服务器端口号\n");
                    return;
                }

                Thread thread = new Thread(reciveAndListener);
                thread.Start((object)ipAndport);

                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务器 " + ipAndport.Ip + " : " + ipAndport.Port + " 已开启监听\n");
                statusInfoTextBlock.Text = "服务器已启动";
                bt.Content = "关闭服务器";
            }

            else
            {
                server.Stop();
                ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务器 " + ipAndport.Ip + " : " + ipAndport.Port + " 已关闭\n");
                statusInfoTextBlock.Text = "服务器已关闭";
                bt.Content = "启动服务器";
            }
        }
Exemple #12
0
        private void reciveAndListener(object ipAndPort)
        {
            IpAndPort ipHePort = (IpAndPort)ipAndPort;
            IPAddress ip       = IPAddress.Parse(ipHePort.Ip);

            server = new TcpListener(ip, int.Parse(ipHePort.Port));
            Socket socketserver = server.Server;
            bool   conma        = !((socketserver.Poll(1000, SelectMode.SelectRead) && (socketserver.Available == 0)) || !socketserver.Connected);

            server.Start();//启动监听

            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "服务端开启侦听....\n");

            client = server.AcceptTcpClient();
            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步
            //获取流
            NetworkStream reciveStream = client.GetStream();


            do
            {
                //获取连接的客户d端的对象
                //if (socketserver.Poll(10, SelectMode.SelectRead) == false)
                //{
                //    client = server.AcceptTcpClient();
                //    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步
                //    reciveStream = client.GetStream();
                //}


                byte[] buffer = new byte[bufferSize];
                int    msgSize;
                try
                {
                    lock (reciveStream)
                    {
                        msgSize = reciveStream.Read(buffer, 0, bufferSize);
                    }

                    if (msgSize == 0)
                    {
                        //获取连接的客户d端的对象
                        client = server.AcceptTcpClient();
                        //ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步
                        reciveStream = client.GetStream();
                        continue;
                    }
                    string msg = Encoding.Default.GetString(buffer, 0, bufferSize);
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n客户端曰:" +
                                                    Encoding.Default.GetString(buffer, 0, msgSize));
                    string de = Encoding.Default.GetString(buffer, 0, msgSize);
                    Dete = Convert.ToInt16(de);
                }
                catch
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n 出现异常:连接被迫关闭");
                    break;
                }
            } while (true);
            Thread.Sleep(100);
        }
Exemple #13
0
        private void reciveAndListener_EMG(object ipAndPort)
        {
            IpAndPort ipHePort = (IpAndPort)ipAndPort;
            IPAddress ip       = IPAddress.Parse(ipHePort.Ip);

            server_emg = new TcpListener(ip, int.Parse(ipHePort.Port));
            Socket socketserver = server_emg.Server;
            bool   conma        = !((socketserver.Poll(1000, SelectMode.SelectRead) && (socketserver.Available == 0)) || !socketserver.Connected);

            server_emg.Start();//启动监听

            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "肌电服务端开启侦听....\n");

            client_emg = server_emg.AcceptTcpClient();
            ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有肌电客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步

            //获取流
            NetworkStream reciveStream = client_emg.GetStream();

            do
            {
                //获取连接的客户d端的对象
                //if (socketserver.Poll(10, SelectMode.SelectRead) == false)
                //{
                //    client = server.AcceptTcpClient();
                //    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有客户端请求连接,连接已建立!");//AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步
                //    reciveStream = client.GetStream();
                //}


                byte[] buffer = new byte[bufferSize];
                int    msgSize;
                try
                {
                    lock (reciveStream)
                    {
                        msgSize = reciveStream.Read(buffer, 0, bufferSize);
                    }

                    if (msgSize == 0)
                    {
                        //获取连接的客户d端的对象
                        client_emg = server_emg.AcceptTcpClient();
                        //ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "有脑电客户端请求连接,连接已建立!"); //AcceptTcpClient 是同步方法,会阻塞进程,得到连接对象后才会执行这一步
                        reciveStream = client_emg.GetStream();
                        continue;
                    }
                    //将外骨骼当前状态发给脑机,使其能够选择对应模式的分类器
                    NetworkStream sendStream = client_emg.GetStream();
                    byte[]        exo_state  = BitConverter.GetBytes(state); // 外骨骼当前状态由int转byte[]
                    sendStream.Write(exo_state, 0, exo_state.Length);

                    //接收脑机发来的命令
                    string msg = Encoding.Default.GetString(buffer, 0, bufferSize);
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n肌电客户端传来信息:" + Encoding.Default.GetString(buffer, 0, msgSize));
                    string eeg = Encoding.Default.GetString(buffer, 0, msgSize);
                    emg_cm = Convert.ToInt16(eeg); //脑电传来的命令
                }
                catch
                {
                    ComWinTextBox.Dispatcher.Invoke(new showData(ComWinTextBox.AppendText), "\n肌电出现异常:连接被迫关闭");
                    break;
                }
            } while (true);

            Thread.Sleep(100);
        }