色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

完善主體資料,免費(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
色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

    9000px;">

      久久久精品视频网站| 久久久久久久福利| 免费一级a毛片夜夜看| 在线播放亚洲精品| 国产又黄又爽视频| 中国黄色片免费看| 久草手机在线视频| 亚洲麻豆一区二区三区| 精品亚洲一区二区三区四区| 中文字幕有码在线播放| 久久精品视频8| 亚洲天堂黄色片| 欧美 日韩 国产 一区二区三区| 亚洲视频第二页| 欧美在线一级片| 国产成人自拍一区| 中文字幕电影av| 久一视频在线观看| www.国产免费| 亚洲福利在线观看视频| 精品在线视频免费观看| 91成人精品一区二区| 日韩欧美中文视频| 九九九久久久久久久| 99久久婷婷国产一区二区三区| 欧美一级小视频| 国产激情视频在线播放| 中文字幕一二三四区| 日本特黄一级片| 国产欧美一级片| 亚洲图片在线播放| 四虎国产成人精品免费一女五男| 国产综合精品视频| www.久久精品.com| 中文字幕av网址| 日本三级一区二区三区| 黄色av一区二区| 丰满人妻av一区二区三区| 亚洲第一色网站| 日本视频免费在线| 久久久久久久久久久久国产精品| 国产ts在线观看| 亚洲在线视频播放| 一区二区三区播放| 日韩熟女一区二区| 久久国产免费观看| 国产伦理一区二区| www.亚洲高清| 一级片aaaa| 亚洲精品在线视频免费观看| 受虐m奴xxx在线观看| 欧美人妻一区二区三区| 精品国产亚洲av麻豆| 国产麻豆剧传媒精品国产| av在线无限看| 92久久精品一区二区| 亚洲黄色小说网址| 在线观看免费不卡av| 天堂中文在线资源| 日韩 欧美 亚洲| 欧美成人aaaaⅴ片在线看| 久久国产精品系列| 精品黑人一区二区三区在线观看| 国产成人av免费看| 国产a级片视频| 国产成人亚洲精品自产在线| 成人午夜视频精品一区| 波多野结衣激情视频| 不卡中文字幕在线观看| 不卡av中文字幕| 国产成人精品777777| 国产精品男女视频| 国产精品视频在| 国产人妻大战黑人20p| 国产情侣呻吟对白高潮| 国产美女永久免费| 国内自拍视频在线播放| 精品综合久久久久| 男人的午夜天堂| 欧美一级做性受免费大片免费 | 久久久精品国产sm调教| 精品人妻午夜一区二区三区四区| 精品少妇无遮挡毛片| 久久精品第一页| 欧美卡一卡二卡三| 色综合天天色综合| 性感美女一级片| 中文字幕在线观看日| 97精品久久人人爽人人爽| www.中文字幕av| 国产色片在线观看| 久久亚洲成人av| 日韩欧美三级视频| 中文字幕日产av| 丰满少妇一级片| 久草国产在线视频| 日本视频免费观看| 性色av蜜臀av| 91久久久久国产一区二区| 国产91在线播放九色| 精品人妻一区二区三区麻豆91| 欧美特级一级片| 影音先锋人妻啪啪av资源网站| √资源天堂中文在线| 国产免费视频一区二区三区| 美女福利视频网| 性无码专区无码| www.com欧美| 极品人妻一区二区| 日日操免费视频| 亚洲精品第二页| 国产人妻精品一区二区三| 欧美激情久久久久久久| 中文字幕国内自拍| 国产精品久久久久久久av| 老牛影视av牛牛影视av| 午夜影院免费观看视频| www.色国产| 欧美日韩在线观看不卡| 在线免费看污网站| 国产免费黄色大片| 日韩av免费播放| 一二三四区视频| 黄色一级大片在线免费看国产一| 日韩欧美一级大片| www.国产色| 人妻少妇精品视频一区二区三区| 中文字幕亚洲乱码| 黄色在线观看av| 在线免费一级片| 国产一区二区麻豆| 亚洲 欧美 激情 另类| 国产成人自拍视频在线| 神马一区二区三区| 动漫av在线免费观看| 日本天堂在线视频| a级片在线观看视频| 欧美特级一级片| 成人av免费播放| 视频二区在线观看| 国产精品久久久久久在线观看| 人人爽人人爽av| av在线天堂网| 天堂在线中文视频| 国产亚洲欧美日韩高清| 一区二区三区视频网| 国产又粗又硬视频| 中文字幕国产免费| 老熟妇高潮一区二区三区| 亚洲精品.www| 人妻少妇偷人精品久久久任期 | 手机看片日韩av| 国产伦精品一区二区三区视频网站| 五月婷婷六月丁香激情| 国产又粗又黄又爽视频| 亚洲欧美精品久久| 人妻少妇精品一区二区三区| 国产成人av片| 中文字幕一区二区人妻视频| 久久精品久久精品久久| 亚洲综合一二三| 天堂网av2018| 九热视频在线观看| 99在线小视频| 亚洲不卡视频在线观看| 久久午夜免费视频| 超碰手机在线观看| 中文字幕乱码av| 日韩女优一区二区| 久久精品一区二区三区四区五区| 69国产精品视频免费观看| 神马午夜一区二区| 久久久精品人妻一区二区三区| www.啪啪.com| 中文字幕视频三区| 日韩精品在线不卡| 久久久久久久久久久网| 福利视频第一页| 亚洲精品国产av| 亚洲av无一区二区三区久久| 欧美手机在线观看| 国精产品一区一区三区免费视频 | 人妻av无码一区二区三区| 国产字幕在线观看| 国产精品成人aaaa在线| 97精品人妻一区二区三区| 亚洲国产成人精品综合99| 无码人妻一区二区三区精品视频| 男人天堂网在线视频| 黄色一级视频免费观看| 国产精品国产三级国产专业不| 亚洲污视频在线观看| 中文天堂在线资源| 五月婷婷六月色| 人妻熟人中文字幕一区二区| 精品人妻一区二区三区四区不卡 | 亚洲熟女毛茸茸| 中文字幕一二三| 在线看片中文字幕| 在线观看中文字幕2021|