不卡视频在线观看_三级网站视频在线观看_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精品网站_国产综合一区二区

      欧美一区二区三区日韩| 一区二区三区 在线观看视| 韩国av一区二区| 1769国产精品| 在线一区欧美| 先锋影音网一区二区| 久久久久久综合| 欧美日韩精品不卡| 国产一区二区剧情av在线| 亚洲国产精品成人| 一区二区三区久久精品| 久久九九全国免费精品观看| 免费久久99精品国产| 国产精品h在线观看| 国产有码一区二区| 亚洲另类在线视频| 欧美一级免费视频| 欧美久久久久久久久| 国产亚洲欧美色| 一区二区日韩欧美| 欧美 日韩 国产精品免费观看| 国产精品国产三级欧美二区| 在线观看日韩| 香蕉尹人综合在线观看| 欧美精品久久久久久久| 韩国福利一区| 亚洲第一伊人| 久久精品99久久香蕉国产色戒| 欧美日韩国内| 亚洲国产精品成人一区二区| 亚洲美女视频| 久久免费视频网站| 国产美女精品| 亚洲一二三四区| 欧美国产日韩精品免费观看| 国产深夜精品福利| 亚洲综合日韩在线| 欧美黑人在线观看| 亚洲福利国产| 久久天天躁夜夜躁狠狠躁2022| 国产欧美日韩另类视频免费观看| 亚洲日本欧美| 猛男gaygay欧美视频| 红桃视频国产一区| 欧美一区二区三区四区在线观看| 欧美性做爰毛片| 夜夜嗨av色一区二区不卡| 欧美成人一区二区三区在线观看| 好看的av在线不卡观看| 久久精品国产亚洲a| 国产欧美欧美| 精品1区2区| 欧美在线免费播放| 欧美午夜精品久久久久久浪潮| 亚洲电影毛片| 欧美成人一品| 亚洲欧洲一区二区天堂久久 | 欧美精品一区视频| 亚洲国产精品免费| 欧美91大片| 亚洲乱码国产乱码精品精98午夜| 麻豆乱码国产一区二区三区| 亚洲电影在线看| 欧美成年人网站| 99v久久综合狠狠综合久久| 欧美另类视频| 一区二区三区日韩欧美精品| 欧美日韩一区二区高清| 亚洲视屏一区| 国产日韩精品一区观看| 羞羞漫画18久久大片| 国产亚洲一区二区三区在线播放| 久久爱www久久做| 在线国产精品播放| 欧美另类videos死尸| 亚洲私拍自拍| 国产三区精品| 麻豆9191精品国产| 一本大道久久a久久综合婷婷| 欧美偷拍另类| 久久久久国产精品一区| 亚洲日本中文字幕| 国产精品成人播放| 久久久午夜精品| 99精品视频一区| 国产精品一区二区a| 毛片一区二区| 亚洲一区亚洲| 亚洲欧洲精品成人久久奇米网| 国产精品国产三级国产普通话蜜臀 | 亚洲精品在线二区| 国产精品日日摸夜夜摸av| 久久久久久夜| 亚洲午夜电影网| 亚洲国产欧美日韩| 欧美日韩精品欧美日韩精品| 久久超碰97中文字幕| 在线看片成人| 国产精品三级视频| 欧美大片免费观看| 亚洲美女黄网| 国产欧美日韩综合一区在线播放| 久久久久国色av免费看影院| 亚洲精选视频在线| 国产在线播精品第三| 欧美极品色图| 久久资源在线| 欧美一区二区在线播放| 一本色道久久综合亚洲精品婷婷| 一区二区在线看| 国产伦理精品不卡| 欧美日韩综合在线免费观看| 欧美成人a∨高清免费观看| 欧美在线观看网站| 亚洲欧美大片| 亚洲一区二区欧美| 一本久道久久综合中文字幕| 亚洲国产高清自拍| 亚洲成人在线观看视频| 国产一区在线播放| 国产色婷婷国产综合在线理论片a| 欧美日韩精品是欧美日韩精品| 浪潮色综合久久天堂| 久久全球大尺度高清视频| 久久久久久久激情视频| 国产一区二区三区成人欧美日韩在线观看 | 欧美视频中文字幕在线| 欧美承认网站| 麻豆乱码国产一区二区三区| 久久综合综合久久综合| 久久精品二区| 久久久亚洲人| 久久婷婷国产综合国色天香| 久久欧美肥婆一二区| 久久看片网站| 久久影音先锋| 麻豆精品网站| 欧美不卡视频一区| 欧美成人一区二免费视频软件| 免费黄网站欧美| 欧美人妖另类| 欧美日韩一区成人| 国产精品久线观看视频| 国产欧美一区二区色老头 | 亚洲国产视频一区| 蜜月aⅴ免费一区二区三区| 韩国av一区二区三区在线观看| 国产一区二区三区在线观看免费视频 | 狠狠久久亚洲欧美| 一色屋精品视频在线看 | 国产精品美女久久久久久2018| 欧美深夜影院| 国产精品一卡二| 国产偷国产偷亚洲高清97cao| 今天的高清视频免费播放成人 | 国产亚洲综合性久久久影院| 国产一区深夜福利| 亚洲第一综合天堂另类专| 亚洲欧洲一二三| 亚洲午夜精品一区二区| 久久国产精品黑丝| 欧美ed2k| 久久免费黄色| 欧美好吊妞视频| 国产精品高潮视频| 精品1区2区| 国产精品99久久久久久人| 欧美一二三区精品| 欧美精选午夜久久久乱码6080| 欧美香蕉视频| 韩日视频一区| 一区二区三区四区国产精品| 久久精品国内一区二区三区| 欧美日韩高清在线播放| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲激情第一页| 午夜影院日韩| 欧美激情偷拍| 韩国av一区二区三区在线观看| 日韩一级不卡| 久久免费高清视频| 国产女主播在线一区二区| 亚洲人成网站777色婷婷| 欧美一区免费| 欧美日韩视频专区在线播放| 一区二区三区在线看| 亚洲一区二区不卡免费| 蜜臀a∨国产成人精品| 国产一区白浆| 午夜日韩在线| 欧美午夜一区| 亚洲免费不卡| 牛夜精品久久久久久久99黑人| 国产亚洲成年网址在线观看| 中文在线一区| 欧美日韩精品免费在线观看视频| 亚洲大胆美女视频| 久久婷婷蜜乳一本欲蜜臀| 国产日韩欧美综合在线| 亚洲影视在线播放|