不卡视频在线观看_三级网站视频在线观看_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电影在线观看| 老司机精品视频导航| 日本大胆欧美人术艺术动态| 亚洲二区在线观看| 亚洲妇女屁股眼交7| 亚洲精品国产成人久久av盗摄| 国产精品热久久久久夜色精品三区 | 国产精品久久久久久久浪潮网站 | 欧美色图片你懂的| 日本高清无吗v一区| 99riav一区二区三区| 成人午夜免费电影| 99久久久无码国产精品| 91在线观看免费视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 99精品久久99久久久久| 色婷婷av一区二区三区大白胸| 欧洲精品一区二区三区在线观看| 在线亚洲欧美专区二区| 91精品国产综合久久蜜臀| 欧美zozozo| 中文字幕视频一区二区三区久| 亚洲精品久久久蜜桃| 亚洲电影一区二区三区| 热久久久久久久| 色视频一区二区| 9191久久久久久久久久久| 欧美xingq一区二区| 欧美经典一区二区| 一区二区理论电影在线观看| 日韩精品午夜视频| 成人午夜av电影| 欧美疯狂性受xxxxx喷水图片| 久久噜噜亚洲综合| 亚洲乱码中文字幕| 国内精品久久久久影院薰衣草| 99久久综合狠狠综合久久| 欧美日韩mp4| 欧美韩国一区二区| 天天色天天爱天天射综合| 成人在线视频首页| 9191国产精品| 中文字幕亚洲视频| 国产在线视视频有精品| 日本精品一区二区三区四区的功能| 精品免费国产二区三区| 亚洲一区在线看| 国产成人a级片| 日韩视频一区二区| 亚洲大片在线观看| www.综合网.com| 久久久噜噜噜久久人人看| 亚洲成人动漫在线观看| 成人av小说网| 久久久久88色偷偷免费| 六月丁香婷婷久久| 欧美视频你懂的| 亚洲男同性恋视频| 不卡av电影在线播放| 久久久久久久久免费| 天天综合日日夜夜精品| 欧美性大战久久| 亚洲综合色婷婷| 99久久精品国产麻豆演员表| 国产精品美女久久久久久久久久久| 久久精品久久综合| 91麻豆精品91久久久久同性| 亚洲成人7777| 欧美二区在线观看| 视频一区二区欧美| 91精品免费观看| 蜜桃视频在线一区| 在线成人av网站| 久久不见久久见免费视频1| 欧美电影在哪看比较好| 亚洲综合无码一区二区| 成人一道本在线| 国产精品视频麻豆| 99久久99久久综合| 综合亚洲深深色噜噜狠狠网站| 成人免费视频网站在线观看| 中文无字幕一区二区三区| 国产传媒一区在线| 国产精品乱码一区二区三区软件| 国产精品91一区二区| 国产女同性恋一区二区| 国产成人免费视频网站高清观看视频 | 久久久蜜桃精品| 99久久免费国产| 亚洲免费在线看| 欧美日韩中文另类| 美女久久久精品| 久久色.com| av一二三不卡影片| 亚洲成人精品一区二区| 91精品国产色综合久久不卡电影| 九九九久久久精品| 国产精品国产三级国产普通话三级 | 久久99精品久久久久久动态图| 久久在线免费观看| proumb性欧美在线观看| 亚洲国产另类精品专区| 欧美电视剧在线观看完整版| 国产sm精品调教视频网站| 一区二区三区视频在线观看| 欧美精品123区| 成人免费视频一区| 日韩精品视频网站| 国产精品全国免费观看高清 | 99久久精品国产网站| 天天av天天翘天天综合网| 欧美精品一区二区三区在线播放| av亚洲产国偷v产偷v自拍| 午夜精品影院在线观看| 久久男人中文字幕资源站| 欧美亚洲综合久久| 国产老妇另类xxxxx| 伊人色综合久久天天人手人婷| 日韩一区二区三区电影在线观看| av一区二区三区四区| 理论电影国产精品| 一区二区三区在线观看网站| 久久久精品2019中文字幕之3| 欧美亚洲自拍偷拍| 成人午夜av在线| 国产一区二区主播在线| 亚洲综合图片区| 国产午夜一区二区三区| 3d成人动漫网站| 色综合一个色综合亚洲| 成人性生交大片| 麻豆高清免费国产一区| 亚洲成人精品一区| 一区二区高清在线| 国产精品成人在线观看| 欧美精品一区二区三区视频| 欧美吞精做爰啪啪高潮| 91免费看视频| 成人sese在线| 成人动漫在线一区| 国产成人99久久亚洲综合精品| 蜜臀国产一区二区三区在线播放| 亚洲国产成人91porn| 尤物在线观看一区| 国产精品久久久久久久久晋中 | 久久先锋资源网| 日韩欧美国产综合一区 | 国产欧美一区二区精品性色| 精品少妇一区二区| 精品久久久久久久一区二区蜜臀| 91精品综合久久久久久| 91精品国产综合久久蜜臀| 7777精品久久久大香线蕉| 欧美综合一区二区| 欧美日韩综合在线| 欧美一区二区三区四区高清| 欧美日韩免费观看一区三区| 欧美日韩dvd在线观看| 欧美一区二区三区在线视频| 在线成人av影院| 欧美成人video| 久久久影院官网| 亚洲欧洲无码一区二区三区| 国产精品乱码一区二区三区软件| 一区二区中文视频| 亚洲午夜精品网| 免费人成精品欧美精品| 国产精品一色哟哟哟| 国产·精品毛片| 91久久精品国产91性色tv| 91视频观看视频| 成人午夜视频网站| 91看片淫黄大片一级| 欧美日韩国产综合久久| 久久日韩粉嫩一区二区三区| 中文字幕不卡在线播放| 一区av在线播放| 精品一区二区成人精品| 成人激情校园春色| 91精品蜜臀在线一区尤物| 久久久久久久久久久99999| 亚洲免费观看高清完整版在线观看| 亚洲国产日产av| 国产伦精品一区二区三区免费 | 欧美一区二区在线免费播放| 国产欧美日韩视频一区二区 | 色综合咪咪久久| 欧美一区二区视频在线观看 | 久久精品免费看| 97精品超碰一区二区三区| 69堂国产成人免费视频| ●精品国产综合乱码久久久久| 日韩国产欧美三级| 成人网在线免费视频| 日韩视频123| 亚洲不卡一区二区三区|