//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("服务端关闭"); } }
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); }
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); }
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 = "启动服务器"; } }
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++); }
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 }
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); }
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); }
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 }
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 = "启动服务器"; } }
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); }
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); }