ITPub博客

首页 > 应用开发 > C/C++ > C# wm6通过udp协议和pc通讯

C# wm6通过udp协议和pc通讯

C/C++ 作者:whisperrr 时间:2021-08-27 16:20:36 0 删除 编辑

  本文主要介绍了如何使用udp协议,多线程,让ppc和pc在同一局域网进行简单的文字收发。

  说明:我的PPC端ip是192.168.0.102,服务器端为192.168.0.100,请根据实际情况配置。

  配置好后,就可以开始我们的编程了。

  代码如下:

  PPC Code

  namespace SimpleTcp

  {

  public partial class Form1 : Form

  {

  public Form1()

  {

  InitializeComponent();

  listBoxCallback = new AddListBoxItemCallback(AddListBoxItem);

  }

  // string senddate,readdate;

  // NetworkStream ns;

  delegate void AddListBoxItemCallback( string text);

  AddListBoxItemCallback listBoxCallback;

  private int port = 8001 ;

  private UdpClient udpClient;

  private void AddListBoxItem( string text)

  {

  // 如果listBoxReceive被不同的线程访问则通过委托处理;

  if (listBoxReceive.InvokeRequired)

  {

  this .Invoke(listBoxCallback, text);

  }

  else

  {

  listBoxReceive.Items.Add(text);

  listBoxReceive.SelectedIndex = listBoxReceive.Items.Count - 1 ;

  }

  }

  private void ReceiveData()

  {

  // 在本机指定的端口接收

  udpClient = new UdpClient(port);

  IPEndPoint remote = null ;

  // 接收从远程主机发送过来的信息;

  while ( true )

  {

  try

  {

  // 关闭udpClient时此句会产生异常

  byte [] bytes = udpClient.Receive( ref remote);

  string str = Encoding.UTF8.GetString(bytes, 0 , bytes.Length);

  AddListBoxItem( string .Format( " 来自{0}:{1} " , remote, str));

  }

  catch

  {

  // 退出循环,结束线程

  break ;

  }

  }

  }

  /// 发送数据到远程主机

  ///

  private void sendData()

  {

  UdpClient myUdpClient = new UdpClient();

  IPAddress remoteIP = IPAddress.Parse(textBoxRemoteIP.Text);

  if ( remoteIP == null )

  {

  MessageBox.Show( " 远程IP格式不正确 " );

  return ;

  }

  IPEndPoint iep = new IPEndPoint(remoteIP, port);

  byte [] bytes = System.Text.Encoding.UTF8.GetBytes(textBoxSend.Text);

  try

  {

  myUdpClient.Send(bytes, bytes.Length, iep);

  myUdpClient.Close();

  textBoxSend.Focus();

  }

  catch (Exception err)

  {

  MessageBox.Show(err.Message, " 发送失败 " );

  }

  finally

  {

  myUdpClient.Close();

  }

  }

  private void button1_Click( object sender, EventArgs e)

  {

  udpClient.Close();

  Application.Exit();

  }

  private void button2_Click( object sender, EventArgs e)

  {

  sendData(); 大连无痛人流哪家好  http://mobile.120wtrlyy.com/ 

  }

  private void Form1_Load( object sender, EventArgs e)

  {

  // 获取本机第一个可用IP地址

  IPAddress myIP = IPAddress.Parse( " 192.168.0.100 " );

  // 为了在同一台机器调试,此IP也作为默认远程IP

  textBoxRemoteIP.Text = myIP.ToString();

  // 创建一个线程接收远程主机发来的信息

  Thread myThread = new Thread( new ThreadStart(ReceiveData));

  // 将线程设为后台运行

  myThread.IsBackground = true ;

  myThread.Start();

  textBoxSend.Focus();

  }

  }

  }

  客户端就ok了。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70005147/viewspace-2789186/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-08-11

  • 博文量
    24
  • 访问量
    13087