完善主體資料,免費贈送VIP會員!
      * 主體類型
      * 企業名稱
      * 信用代碼
      * 所在行業
      * 企業規模
      * 所在職位
      * 姓名
      * 所在行業
      * 學歷
      * 工作性質
      請先選擇行業
      您還可以選擇以下福利:
      行業福利,領完即止!

      下載app免費領取會員

      NULL

      ad.jpg

      二次開發教程:C# udp小程序

      發布于:2019-07-25 15:22:07

      網友投稿

      更多

      學習udp,寫個小聊天程序,供以后查看


      使用了MVVMLight


          /// <summary>

          /// This class contains properties that the main View can data bind to.

          /// <para>

          /// See http://www.mvvmlight.net

          /// </para>

          /// </summary>

          public class MainViewModel : ViewModelBase

          {

              private int port1 = 8981;

              private int port2 = 8982;

              private UdpClient user1 = null;//new UdpClient(8981);

              private UdpClient user2 = null;//new UdpClient(port2);

              private string hostname = "127.0.0.1";

              private readonly IDataService _dataService;

              /// <summary>

              /// The <see cref="WelcomeTitle" /> property's name.

              /// </summary>

              public const string WelcomeTitlePropertyName = "WelcomeTitle";

              private string _welcomeTitle = string.Empty;

              /// <summary>

              /// Gets the WelcomeTitle property.

              /// Changes to that property's value raise the PropertyChanged event. 

              /// </summary>

              public string WelcomeTitle

              {

                  get

                  {

                      return _welcomeTitle;

                  }

                  set

                  {

                      Set(ref _welcomeTitle, value);

                  }

              }


              /// <summary>

              /// Initializes a new instance of the MainViewModel class.

              /// </summary>

              public MainViewModel(IDataService dataService)

              {

                  _dataService = dataService;

                  _dataService.GetData(

                      (item, error) =>

                      {

                          if (error != null)

                          {

                              // Report error here

                              return;

                          }


                          WelcomeTitle = item.Title;

                      });


                  user1 = new UdpClient(port1);

                  user2 = new UdpClient(port2);


                  Task task1 = new Task(() =>

                  {

                      while (true)

                      {

                          IPEndPoint remoteEP = null;

                          byte[] message = user1.Receive(ref remoteEP);

                          string msg = Encoding.UTF8.GetString(message);

                          msg = chatInfo + "\n" + msg;

                          Set(ref chatInfo, msg,false,nameof(ChatInfo));

                      }

                  });

                  task1.Start();


                  Task task2 = new Task(() =>

                  {

                      while (true)

                      {

                          IPEndPoint remoteEP = null;

                          byte[] message = user2.Receive(ref remoteEP);

                          string msg = Encoding.UTF8.GetString(message);

                          msg = chatInfo + "\n" + msg;

                          Set(ref chatInfo, msg, false, nameof(ChatInfo));

                      }

                  });

                  task2.Start();

              }



              private string chatInfo = string.Empty;

              public string ChatInfo

              {

                  get

                  {

                      return chatInfo;

                  }

                  set

                  {

                      chatInfo = value;

                  }

              }


              private string message1 = string.Empty;

              public string Message1

              {

                  get

                  {

                      return message1;

                  }

                  set

                  {

                      // message1 = value;     

                      Set(ref message1, value);

                      RaisePropertyChanged(nameof(User1_Send));     

                  }

              }


              private string message2 = string.Empty;

              public string Message2

              {

                  get

                  {

                      return message2;

                  }

                  set

                  {

                      //message2 = value;

                      Set(ref message2, value);

                      RaisePropertyChanged(nameof(User2_Send));

                  }

              }


              public ICommand User1_Send

              {

                  get

                  {

                      return new RelayCommand(() =>

                      {

                          message1 = "user1:" + message1;

                          byte[] msg = Encoding.UTF8.GetBytes(message1);

                          IPAddress id = IPAddress.Parse(hostname);

                          IPEndPoint ip = new IPEndPoint(id, port2);

                          user1.Send(msg, msg.Length, ip);

                          Set(ref message1, null,false,nameof(Message1));

                          RaisePropertyChanged(nameof(User1_Send));

                      }, ()=> {

                          return !string.IsNullOrWhiteSpace(message1);

                      });

                  }

              }


              public ICommand User2_Send

              {

                  get

                  {

                      return new RelayCommand(() =>

                      {

                          message2 = "user2:" + message2;

                          byte[] msg = Encoding.UTF8.GetBytes(message2);

                          IPAddress id = IPAddress.Parse(hostname);

                          IPEndPoint ip = new IPEndPoint(id, port1);

                          user2.Send(msg, msg.Length, ip);

                          Set(ref message2, null, false, nameof(Message2));

                          RaisePropertyChanged(nameof(User2_Send));

                      }, () => {

                          return !string.IsNullOrWhiteSpace(message2);

                      });

                  }

              }

              public override void Cleanup()

              {

                  // Clean up if needed

                  user1.Close();

                  user2.Close();

                  base.Cleanup();

              }

          }




      xmal:


      <Window x:Class="ChatDemo.MainWindow"

              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

              xmlns:ignore="http://www.galasoft.ch/ignore"

              mc:Ignorable="d ignore"

              SizeToContent="WidthAndHeight"

              Title="MVVM Light Application"

              DataContext="{Binding Main, Source={StaticResource Locator}}">

          

          <Window.Resources>

              <ResourceDictionary>

                  <ResourceDictionary.MergedDictionaries>

                      <ResourceDictionary Source="Skins/MainSkin.xaml" />

                  </ResourceDictionary.MergedDictionaries>

              </ResourceDictionary>

          </Window.Resources>



          <Grid x:Name="LayoutRoot">

              <Grid.ColumnDefinitions>

                  <ColumnDefinition/>

                  <ColumnDefinition/>

              </Grid.ColumnDefinitions>

              <Grid.RowDefinitions>

                  <RowDefinition/>

                  <RowDefinition/>

                  <RowDefinition/>

              </Grid.RowDefinitions>

              <TextBox  Text="{Binding Path=ChatInfo,UpdateSourceTrigger=PropertyChanged}" Grid.Row="0" Grid.Column="0" IsReadOnly="True"/>

              <TextBox  Text="{Binding Path=Message1,UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" Grid.Column="0" Height="100"/>

              <Button  Content="發送" Command="{Binding Path=User1_Send}" Grid.Row="2" Grid.Column="0"/>

              <TextBox   Text="{Binding Path=ChatInfo,UpdateSourceTrigger=PropertyChanged}" Grid.Row="0" Grid.Column="1" IsReadOnly="True"/>

              <TextBox   Text="{Binding Path=Message2,UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" Grid.Column="1" Height="100"/>

              <Button Content="發送" Command="{Binding Path=User2_Send}" Grid.Row="2" Grid.Column="1"/>

          </Grid>

      </Window>

      本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

      未標題-1.jpg

      上一篇:二次開發教程:C# 通過MVVMLight探索IOC

      下一篇:二次開發教程:WPF 設置快捷鍵

      主站蜘蛛池模板: 久久久精品一区二区三区| 成人区人妻精品一区二区不卡| 国产乱码精品一区二区三区香蕉 | 日本精品一区二区三本中文| 国产成人无码AV一区二区在线观看 | 精品人妻无码一区二区三区蜜桃一| 国产精品主播一区二区| 性色av闺蜜一区二区三区| 亚洲中文字幕无码一区二区三区| 无码日韩精品一区二区免费| 久久久久99人妻一区二区三区| 精品乱码一区内射人妻无码| 国产成人精品第一区二区| 国产麻豆精品一区二区三区v视界| 国产精品一区二区久久乐下载| 日本片免费观看一区二区| 伦理一区二区三区| 亚洲一区二区三区乱码A| 国产激情一区二区三区在线观看| 国产精品一区二区不卡| 中文字幕一精品亚洲无线一区| 无码毛片一区二区三区中文字幕| av一区二区三区人妻少妇| 国产经典一区二区三区蜜芽| 日韩AV无码久久一区二区| 久久精品视频一区| 久久国产一区二区三区| 亚洲日本一区二区三区在线| 91麻豆精品国产自产在线观看一区| 日韩一区二区在线观看| 精品乱人伦一区二区| 国产一区二区三区免费在线观看| 韩国女主播一区二区| 日本无卡码免费一区二区三区| 成人免费一区二区三区在线观看| 波多野结衣AV一区二区三区中文 | 成人免费av一区二区三区| 一区二区三区视频在线播放| 国产在线精品一区二区| 美女福利视频一区二区 | 中文字幕一区精品|