不卡视频在线观看_三级网站视频在线观看_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;">

          av污在线观看| 天天躁日日躁狠狠躁av| 精品国产免费观看| 久久精品久久99| 免费黄色一级网站| 日韩手机在线视频| 午夜影院在线视频| 亚洲黄色a级片| 91精品中文字幕| 国产精品一区二区羞羞答答| 国产午夜激情视频| 久久精品国产亚洲AV熟女| 内射一区二区三区| 添女人荫蒂视频| 亚洲精品一区二三区| 91杏吧porn蝌蚪| 国产三级视频网站| 老熟妇精品一区二区三区| 欧美黄色一级网站| 亚洲成a人片在线www| 亚洲一级二级片| 国产精品毛片一区视频播| 手机av在线看| 国产jjizz一区二区三区视频 | 手机在线播放av| 91麻豆成人精品国产| 免费看一级一片| 91丝袜超薄交口足| 天堂中文在线资源| 第一页在线视频| 三级av免费观看| 国产又黄又猛又爽| 中文字幕在线观看1| 毛片毛片毛片毛| www.久久成人| 亚洲h视频在线观看| 精品国产人妻一区二区三区| 亚洲视频在线观看一区二区三区| 久久久亚洲av波多野结衣| 久久精品久久99| 国产麻豆剧传媒精品国产| 亚洲一区二区在线免费| 三级视频中文字幕| 婷婷激情五月网| 怡红院一区二区三区| 亚洲精品无码久久久| 亚洲一区二区三区黄色| 国产熟女高潮一区二区三区| 精品久久久久久久久久久国产字幕 | 久久婷婷五月综合| 日本三级中文字幕| 亚洲第一成人网站| 91狠狠综合久久久| 国产精品麻豆入口| 欧美成人免费观看视频| 午夜久久久久久久久久| www.99视频| 久久综合综合久久| 在线免费观看a级片| 成人免费视频国产免费| 毛片毛片毛片毛| 一区二区三区韩国| 国产精品欧美亚洲| 日本美女视频一区| 一级黄色高清视频| 可以免费观看的毛片| 中文字幕乱码中文字幕| 国产高清在线免费| 三叶草欧洲码在线| www.国产.com| 日产精品久久久久久久| 91麻豆精品在线| 欧美特级aaa| 一本一本久久a久久| 精品成人久久久| 中文字幕电影av| 黄色一级免费视频| 中文字幕 欧美日韩| 国产伦精品一区二区三区妓女下载| 日本熟女一区二区| www.cao超碰| 日本视频网站在线观看| 99鲁鲁精品一区二区三区| 欧美三级免费看| 91精品久久久久久久久久久久 | 中文字幕1区2区| 黄色av免费观看| 亚洲国产欧美视频| 久久精品三级视频| 亚洲无人区码一码二码三码的含义 | 婷婷激情五月综合| 国产精品久久久久毛片| 四季av一区二区| 精品午夜福利在线观看| 亚洲欧美在线视频免费| 欧美成人免费观看视频| a在线视频播放观看免费观看| 日韩xxxxxxxxx| 国产少妇在线观看| 中文字幕精品亚洲| 美女喷白浆视频| 丰满人妻一区二区三区免费视频| 手机在线免费毛片| 精品国产一级片| 艳妇乳肉豪妇荡乳av无码福利| 欧美一级免费片| 国产免费一级视频| 亚洲精品男人天堂| 人妻少妇精品一区二区三区| 国产精品二区视频| 亚洲精品一区二区三区在线播放| 免费观看特级毛片| 丰满人妻一区二区三区无码av| 婷婷在线观看视频| 免费看黄色av| 国产网址在线观看| 国产sm在线观看| 在线观看中文av| 任你躁av一区二区三区| 国产又粗又长视频| a v视频在线观看| 中文无码av一区二区三区| 欧美性猛交bbbbb精品| 国产精品久久久午夜夜伦鲁鲁| 亚洲国产无线乱码在线观看| 手机看片久久久| 男女做爰猛烈刺激| 国产又大又黄的视频| 91激情视频在线观看| 色在线观看视频| 精品999在线| 国产精品一区二区黑人巨大| 99国产精品久久久久久久成人| 中文字幕22页| 亚洲AV无码精品自拍| 日韩精品一区二区亚洲av | 姝姝窝人体www聚色窝| 久久出品必属精品| 国产麻豆精品一区| 成 人 黄 色 片 在线播放 | 国产精品毛片一区二区| 992在线观看| 亚洲欧美一区二区三区四区五区| 日韩精品一区二区亚洲av| 免费看的黄色录像| 久久精品国产亚洲AV成人婷婷| 国产无套内射又大又猛又粗又爽 | jizz国产免费| 中文字幕在线播放av| 天堂在线精品视频| 日韩一区二区三区四区在线| 国精品人伦一区二区三区蜜桃| 福利在线一区二区三区| 亚洲欧美综合7777色婷婷| 亚洲欧美在线观看视频| 亚洲精品国产一区黑色丝袜| 中文字幕乱码视频| 亚洲国产欧美另类| 亚洲毛片亚洲毛片亚洲毛片| 中文字幕一区久久| 最近中文字幕免费观看| 中文av一区二区三区| 亚洲精品久久久久久久久久久久久久 | 东京热无码av男人的天堂| 国产 日韩 欧美 成人| 国产sm调教视频| 国产精品成人在线视频| 国产熟女一区二区| 国产午夜精品福利视频| 国产无遮挡猛进猛出免费软件| 国产熟女一区二区三区五月婷| 国产熟妇一区二区三区四区| 国产又粗又黄又爽视频| 一区二区三区 日韩| 中文字幕网址在线| 无码一区二区精品| 无码人妻av一区二区三区波多野| 日韩成人精品视频在线观看| 日韩成人黄色片| 青青草国产在线观看| 日本一二三区在线| 无码人妻精品一区二区三区夜夜嗨| 日韩欧美成人一区二区三区| 天天操天天操天天| 亚洲成熟少妇视频在线观看| 亚洲中文字幕无码av| 亚洲最大的黄色网| 超碰成人在线播放| 国产精品国产精品国产| 久久久久中文字幕亚洲精品| 欧美超碰在线观看| 少妇人妻一区二区| 亚洲欧美激情国产综合久久久| 国产在线视频卡一卡二| 色啦啦av综合| 97超碰免费在线观看| 国产成人在线网址| 在线观看免费的av| 亚洲欧美日韩精品一区| 国产天堂av在线|