完善主體資料,免費贈送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无码免费一区二区三区| 国模丽丽啪啪一区二区| 无码aⅴ精品一区二区三区浪潮 | 精品国产亚洲一区二区三区在线观看 | 国产成人久久一区二区三区| 国产日韩精品一区二区三区在线 | 无码毛片视频一区二区本码 | 国产一区二区精品久久岳| 制服美女视频一区| 女人18毛片a级毛片一区二区| 无码人妻精品一区二区三区99性| 精品国产亚洲一区二区三区| 红桃AV一区二区三区在线无码AV| 亚洲AV成人精品日韩一区18p| 日韩精品国产一区| 日韩视频一区二区| 国产萌白酱在线一区二区| 国产精品99精品一区二区三区| 国产精品99精品一区二区三区| 激情无码亚洲一区二区三区| 老熟妇高潮一区二区三区| 亚洲AV无码一区二区三区牲色| 中文字幕乱码亚洲精品一区| 农村人乱弄一区二区| 中文字幕一区二区人妻性色| 国产成人无码AV一区二区| 亚洲综合色自拍一区| 午夜福利一区二区三区高清视频 | 成人国产精品一区二区网站| V一区无码内射国产| 一区二区三区在线|日本| 国产一区三区三区| 亚洲综合无码一区二区| 一区二区三区高清| 波多野结衣中文字幕一区| 国产日韩高清一区二区三区|