不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

完善主體資料,免費贈送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 設置快捷鍵

60acb4e0ef112.png
不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

      9000px;">

          国产欧美在线观看一区| 毛片av一区二区三区| 91免费视频观看| 一区二区激情小说| 国产三级精品在线| 日韩欧美综合在线| 欧美图区在线视频| 国产在线不卡视频| 亚洲人123区| 成人在线视频一区二区| 一区二区三区高清不卡| 蜜桃传媒麻豆第一区在线观看| 波多野结衣在线一区| 欧美一卡2卡三卡4卡5免费| 日韩美女啊v在线免费观看| 日产精品久久久久久久性色| 99麻豆久久久国产精品免费| 久久精品一区蜜桃臀影院| 日韩va亚洲va欧美va久久| 天使萌一区二区三区免费观看| 国产一区91精品张津瑜| 欧美日韩中文一区| 亚洲美女视频在线观看| 国产福利电影一区二区三区| 久久综合久久综合九色| 久久99久久久欧美国产| 欧美美女激情18p| 亚洲国产wwwccc36天堂| 在线精品视频免费播放| 亚洲综合免费观看高清在线观看| 丁香婷婷综合色啪| 久久精品人人爽人人爽| 亚洲乱码一区二区三区在线观看| 国产成人精品综合在线观看| 7777精品伊人久久久大香线蕉超级流畅| 国产精品乱人伦一区二区| 国产精品一区二区视频| 日韩欧美高清一区| 国内精品伊人久久久久影院对白| 日韩精品一区国产麻豆| 国产一区二区三区黄视频 | 国产精品久线在线观看| 粉嫩嫩av羞羞动漫久久久| 亚洲国产精品激情在线观看| 成人午夜免费视频| 亚洲欧洲韩国日本视频| 欧美影院午夜播放| 国产亚洲欧美色| 成人黄色免费短视频| 亚洲精品国产高清久久伦理二区| 精品视频全国免费看| 国产成人午夜视频| 一区二区三区在线观看网站| 欧美精品色一区二区三区| 秋霞电影网一区二区| 国产午夜三级一区二区三| 91丨九色丨蝌蚪富婆spa| 久久众筹精品私拍模特| 91官网在线免费观看| 欧美亚洲一区二区在线观看| 色综合久久中文字幕综合网| 972aa.com艺术欧美| 99精品视频一区| 色综合亚洲欧洲| 欧美性受xxxx黑人xyx| 欧美精选午夜久久久乱码6080| 91麻豆123| 欧美日韩精品一区二区三区 | gogo大胆日本视频一区| 午夜国产精品一区| 欧美日韩1区2区| 一区二区三区四区五区视频在线观看 | 中文字幕免费不卡在线| 日本欧美大码aⅴ在线播放| 国产精品久久久久久久久久免费看 | 久久丁香综合五月国产三级网站| 综合色中文字幕| 精品福利一二区| 欧美日韩和欧美的一区二区| 免费观看在线综合| 久久这里只有精品6| 国产欧美视频一区二区三区| 有码一区二区三区| 色婷婷综合视频在线观看| 色综合视频在线观看| 激情小说亚洲一区| 丝袜亚洲另类欧美综合| 亚洲成av人片观看| 国产精品福利一区二区| 精品黑人一区二区三区久久 | 欧美性猛片aaaaaaa做受| 精品一区二区在线视频| 舔着乳尖日韩一区| 亚洲国产日韩a在线播放| 有码一区二区三区| 亚洲欧美激情插| 国产精品久久久久久久裸模| 久久综合久色欧美综合狠狠| 精品国产髙清在线看国产毛片| 欧美片网站yy| 国产精品自拍网站| 久久精品国产精品亚洲综合| 欧美亚洲愉拍一区二区| 欧美三级资源在线| 欧美亚洲国产一区二区三区| 99精品国产视频| 亚洲视频电影在线| 极品少妇xxxx偷拍精品少妇| 欧美在线免费播放| 欧美色网站导航| 另类综合日韩欧美亚洲| 中文字幕五月欧美| 久久久精品免费免费| 丝袜美腿高跟呻吟高潮一区| 午夜不卡av在线| 国产毛片精品视频| 成人一区二区三区| 91精品办公室少妇高潮对白| 欧美综合一区二区| 欧美一级xxx| 国产女人18水真多18精品一级做| 亚洲日本在线看| 亚洲综合一区二区三区| 2020国产精品自拍| 日韩精品一区二区在线观看| 中文字幕欧美区| 亚洲成av人片在线观看无码| 久久爱另类一区二区小说| 国产91丝袜在线播放| 色又黄又爽网站www久久| 欧美精品v国产精品v日韩精品| 日韩免费在线观看| 国产精品卡一卡二卡三| 日韩福利视频网| 成人性视频网站| 午夜视黄欧洲亚洲| 成人性生交大合| 91精品视频网| 欧美高清在线精品一区| 五月激情综合色| 99麻豆久久久国产精品免费| 日韩欧美一区中文| 亚洲天堂网中文字| 麻豆专区一区二区三区四区五区| 97久久超碰国产精品| 精品国产乱码久久久久久久 | 亚洲综合小说图片| 国产成人精品一区二区三区四区 | 91精品视频网| 亚洲视频图片小说| 成人av网站大全| 精品国产乱码久久| 免费一级欧美片在线观看| 91网站最新地址| 日韩精品专区在线影院重磅| 国产精品的网站| 精品写真视频在线观看| 欧美三级视频在线观看| 国产亚洲女人久久久久毛片| 欧美成人一区二区三区在线观看| 亚洲精品视频在线观看网站| 国产精品一区二区果冻传媒| 69成人精品免费视频| 一区二区高清视频在线观看| 成人av小说网| 国产喂奶挤奶一区二区三区| 精品一区二区在线免费观看| 欧美一级久久久| 国产清纯白嫩初高生在线观看91| 亚洲成人精品一区| 欧美视频完全免费看| 怡红院av一区二区三区| 一本一道久久a久久精品| 亚洲欧美日韩国产一区二区三区| youjizz久久| 中文字幕在线观看一区| 成人综合日日夜夜| 91香蕉视频黄| 亚洲女爱视频在线| 亚洲成a人在线观看| 亚洲va欧美va天堂v国产综合| 在线亚洲免费视频| 国产99久久久国产精品免费看| 亚洲国产日韩一级| 自拍视频在线观看一区二区| 欧美日本韩国一区二区三区视频 | 欧美日韩综合在线免费观看| 91麻豆精品一区二区三区| 国产一区二区三区在线观看免费 | 欧美mv和日韩mv的网站| 粉嫩在线一区二区三区视频| 男人的天堂亚洲一区| 亚洲成精国产精品女| 亚洲成av人片观看| 亚洲18色成人| 亚洲成va人在线观看| 午夜精品久久久久久久久久| 亚洲国产人成综合网站| 亚洲成人av在线电影| 亚洲成人免费在线观看|