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

完善主體資料,免費(fèi)贈送VIP會員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費(fèi)領(lǐng)取會員

NULL

ad.jpg

二次開發(fā)教程:C# udp小程序

發(fā)布于:2019-07-25 15:22:07

網(wǎng)友投稿

更多

學(xué)習(xí)udp,寫個(gè)小聊天程序,供以后查看


使用了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="發(fā)送" 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="發(fā)送" Command="{Binding Path=User2_Send}" Grid.Row="2" Grid.Column="1"/>

    </Grid>

</Window>

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標(biāo)題-1.jpg

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

下一篇:二次開發(fā)教程:WPF 設(shè)置快捷鍵

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

      9000px;">

          欧美电视剧在线观看完整版| 亚洲一区二区三区爽爽爽爽爽| 国产精品国模大尺度视频| 国产精品久久久久久久久晋中 | 亚洲欧美激情插| 奇米777欧美一区二区| 国产99精品国产| 欧美日本一区二区| 国产精品久久久久影院老司 | 97久久精品人人做人人爽50路| 911国产精品| 国产精品免费久久久久| 日韩国产欧美在线视频| 成人综合在线视频| 日韩欧美一区二区久久婷婷| 一区二区三区在线免费观看| 玖玖九九国产精品| 欧美日韩综合一区| 国产精品久久久久影院老司 | 欧美一区二区三区色| 中文字幕一区二区三区色视频 | 高清久久久久久| 欧美电影免费观看完整版| 亚洲精品日韩一| 懂色av一区二区在线播放| 日韩免费电影一区| 日韩av在线播放中文字幕| 99re这里只有精品视频首页| 国产亚洲精品7777| 国产乱国产乱300精品| 91精品国产品国语在线不卡| 亚洲国产中文字幕| 一本大道综合伊人精品热热| 中文字幕日韩一区| 99久久免费精品高清特色大片| 欧美国产精品专区| 国产精品亚洲人在线观看| 欧美一区二区高清| 青娱乐精品视频| 欧美精品一二三| 午夜精品福利在线| 欧美在线一区二区| 亚洲国产精品一区二区www在线| 97精品国产露脸对白| 中文字幕亚洲成人| 99v久久综合狠狠综合久久| 亚洲特级片在线| 一本色道久久综合亚洲91| 一区二区三区精品在线| 欧美日韩高清不卡| 香蕉久久夜色精品国产使用方法| 欧美人xxxx| 激情文学综合插| 久久久久97国产精华液好用吗| 国产伦精一区二区三区| 国产日韩精品一区二区三区| 不卡的电影网站| 一区二区不卡在线播放| 欧美精品自拍偷拍动漫精品| 日韩中文字幕亚洲一区二区va在线 | 精品日韩99亚洲| 国内成+人亚洲+欧美+综合在线| 久久欧美一区二区| 丰满亚洲少妇av| 亚洲精品国久久99热| 欧美日韩中文字幕一区二区| 日韩电影在线免费看| 日韩午夜av电影| 国产精品一线二线三线| 亚洲欧洲成人av每日更新| 欧美在线观看禁18| 欧美aaaaaa午夜精品| 国产精品嫩草影院av蜜臀| 欧美私模裸体表演在线观看| 免费在线观看日韩欧美| 欧美极品aⅴ影院| 欧美亚洲日本国产| 亚洲精品高清视频在线观看| www.久久久久久久久| 日本一区二区三区国色天香| 精品一区二区三区日韩| 欧美www视频| 美女被吸乳得到大胸91| 欧美一区二区视频在线观看2022| 亚洲午夜一二三区视频| 色婷婷综合久色| 亚洲综合一区二区| 欧美乱妇15p| 水蜜桃久久夜色精品一区的特点| 欧洲精品中文字幕| 亚洲一本大道在线| 欧美老年两性高潮| 日韩精品成人一区二区三区 | 亚洲主播在线播放| 国产午夜久久久久| 偷拍自拍另类欧美| 91香蕉国产在线观看软件| 亚洲欧美日韩电影| 欧美日韩高清影院| 精品一区二区三区视频在线观看 | 91网站最新地址| 亚洲国产中文字幕在线视频综合| 欧美日韩激情一区二区三区| 日本欧美在线观看| 久久久青草青青国产亚洲免观| 国产一区二区调教| 国产精品电影一区二区| 色婷婷av一区二区三区之一色屋| 五月天丁香久久| 久久久久久久一区| 色先锋资源久久综合| 日韩av二区在线播放| 久久蜜桃香蕉精品一区二区三区| 成人av在线播放网址| 日本不卡123| 国产精品网站在线播放| 欧美高清精品3d| 福利电影一区二区三区| 亚洲综合激情另类小说区| 91精品国产欧美一区二区成人| 国产成人免费视频一区| 一区二区高清免费观看影视大全| 日韩午夜激情电影| 色欧美片视频在线观看 | 粉嫩嫩av羞羞动漫久久久| 一区二区欧美在线观看| 久久新电视剧免费观看| 欧美色网站导航| 福利一区福利二区| 热久久国产精品| 亚洲高清一区二区三区| 欧美国产乱子伦| 日韩欧美的一区| 在线观看亚洲精品| 国产91高潮流白浆在线麻豆| 日韩成人一区二区| 亚洲欧美视频一区| 国产色产综合产在线视频| 日韩亚洲欧美中文三级| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 一本色道**综合亚洲精品蜜桃冫| 亚洲aaa精品| 精品少妇一区二区三区日产乱码| 99这里都是精品| 国产精品77777| 激情文学综合网| 美日韩一区二区| 日韩在线观看一区二区| 一区二区三区日本| 亚洲男人天堂av| 国产精品卡一卡二| 亚洲欧洲精品一区二区精品久久久| 日韩午夜电影av| 6080国产精品一区二区| 欧美日韩国产中文| 91亚洲精品久久久蜜桃| 91在线porny国产在线看| 波多野结衣中文字幕一区| 丁香啪啪综合成人亚洲小说| 国产精品一二三区| 狠狠狠色丁香婷婷综合久久五月| 蜜臀久久久99精品久久久久久| 石原莉奈在线亚洲二区| 免费精品99久久国产综合精品| 天天色综合天天| 另类小说一区二区三区| 国产乱码精品一区二区三 | 国产成人av在线影院| 国产成人av影院| 不卡在线观看av| 99久久免费视频.com| 91国产免费看| 555www色欧美视频| 欧美成人福利视频| 亚洲国产精品v| 亚洲综合精品久久| 日本欧美肥老太交大片| 国内精品不卡在线| 成人高清伦理免费影院在线观看| 91首页免费视频| 欧美日韩性生活| 6080日韩午夜伦伦午夜伦| 久久久久88色偷偷免费| 亚洲精品一二三四区| 午夜精品久久久久久久99水蜜桃| 国内精品国产成人| 成人黄色综合网站| 在线观看国产日韩| 精品欧美乱码久久久久久1区2区| 久久久久9999亚洲精品| 亚洲韩国一区二区三区| 国内精品视频666| 91在线一区二区三区| 欧美一区日本一区韩国一区| 日本一区二区三区久久久久久久久不| 亚洲日本一区二区三区| 韩国欧美国产一区| 欧美自拍偷拍午夜视频| 2021中文字幕一区亚洲| 亚洲精品中文在线影院|