C# wm6透過udp協議和pc通訊

whisperrr發表於2021-08-27

  本文主要介紹瞭如何使用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(); 大連無痛人流哪家好  

  }

  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部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2789186/,如需轉載,請註明出處,否則將追究法律責任。

相關文章