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

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

    亚洲一区二区三区四区五区黄| 欧美成人影音| 曰韩精品一区二区| 欧美日韩国产色综合一二三四 | 亚洲人成网站在线播| 国产精品人人爽人人做我的可爱| 日韩视频专区| 国内一区二区在线视频观看| 欧美日韩国产一区| 欧美亚洲一区在线| 亚洲美女av网站| 狠狠色噜噜狠狠狠狠色吗综合| 久久噜噜噜精品国产亚洲综合| 欧美—级高清免费播放| 亚洲女人av| 亚洲精品美女久久7777777| 国产午夜精品美女视频明星a级| 欧美日本国产一区| 美女国内精品自产拍在线播放| 99精品热视频只有精品10| 亚洲福利视频网| 国产一区二区视频在线观看| 国产日韩欧美黄色| 在线欧美小视频| 国产欧美一区二区视频| 国产精品福利网| 欧美日韩八区| 欧美日韩国产综合视频在线观看中文 | 久久久天天操| 久久精品视频免费播放| 欧美一级视频| 性色av一区二区三区在线观看 | 国产午夜精品麻豆| 国产精品入口麻豆原神| 国产精品护士白丝一区av| 欧美日韩日本国产亚洲在线| 欧美极品色图| 欧美色中文字幕| 国产精品久久久久99| 国产精品丝袜白浆摸在线| 国产精品热久久久久夜色精品三区 | 欧美国产亚洲另类动漫| 亚洲天堂网在线观看| 亚洲一区二区伦理| 欧美亚洲三级| 久久久久久婷| 欧美激情在线有限公司| 欧美视频久久| 国内激情久久| 日韩亚洲不卡在线| 亚洲欧洲av一区二区三区久久| 欧美一区二区成人| 蜜臀av国产精品久久久久| 欧美激情一区二区三区成人| 欧美亚州韩日在线看免费版国语版| 国产精品入口福利| 一区在线视频| 宅男噜噜噜66一区二区| 久久本道综合色狠狠五月| 久久亚洲国产精品一区二区| 欧美另类亚洲| 国产视频精品xxxx| 99国产精品国产精品毛片| 午夜伦欧美伦电影理论片| 久久蜜桃精品| 国产精品久久国产精品99gif| 一色屋精品视频在线观看网站| 99国产精品| 久久婷婷av| 国产精品成人一区| 亚洲国产精品激情在线观看| 亚洲午夜女主播在线直播| 久久综合久久久久88| 国产精品高潮呻吟| 亚洲国产日韩一区二区| 欧美一区成人| 国产精品99一区二区| 欧美日本三区| 激情丁香综合| 欧美一区二区三区在线免费观看| 女生裸体视频一区二区三区| 国产亚洲福利| 西瓜成人精品人成网站| 欧美啪啪一区| 91久久午夜| 欧美69wwwcom| 18成人免费观看视频| 欧美一区二区在线播放| 国产精品v日韩精品| 亚洲精品欧美日韩专区| 麻豆精品视频| 亚洲国产综合91精品麻豆| 久久婷婷综合激情| 国产亚洲高清视频| 欧美伊人久久久久久午夜久久久久 | 久久久中精品2020中文| 国产亚洲一级| 欧美在线观看日本一区| 国产欧美一区二区三区久久| 亚洲一区二区视频在线观看| 欧美日韩精品免费观看视一区二区 | 亚洲国产精品激情在线观看| 久久久亚洲国产美女国产盗摄| 国产亚洲免费的视频看| 欧美一区视频| 国产亚洲人成网站在线观看| 欧美伊人精品成人久久综合97| 国产一区二区欧美| 久久久水蜜桃| 亚洲国产日韩欧美在线99 | 久久亚洲国产精品一区二区| 激情六月综合| 欧美成人精品在线观看| 日韩网站在线| 国产精品久久久久久久久婷婷| 亚洲免费小视频| 国产九九精品| 久久久五月婷婷| 亚洲精品一品区二品区三品区| 欧美日韩免费观看一区三区| 午夜精品久久| 1024成人| 欧美性感一类影片在线播放 | 欧美日韩一区二区三| 午夜日韩在线观看| 在线观看91精品国产入口| 欧美风情在线观看| 香蕉亚洲视频| 亚洲国产专区| 国产人成精品一区二区三| 久久综合福利| 亚洲中字黄色| 亚洲国产精品成人综合| 国产精品久久久久久户外露出| 久久影视三级福利片| 亚洲一区二区精品| 亚洲国产一区二区三区a毛片| 国产精品乱人伦一区二区| 蜜桃av噜噜一区| 亚洲影院免费| 亚洲三级视频在线观看| 国产日韩欧美| 欧美三级精品| 麻豆精品视频| 欧美一区免费视频| 一区二区三区欧美日韩| 亚洲国产精品久久久久| 国产视频精品xxxx| 国产精品久久久久久久7电影 | 久久久久女教师免费一区| 这里只有视频精品| 亚洲欧洲视频在线| 国模大胆一区二区三区| 国产精品伦一区| 欧美日韩在线不卡| 欧美精品一区二区三区一线天视频| 久久国产手机看片| 欧美夜福利tv在线| 亚洲一级二级在线| 一区二区日韩伦理片| 亚洲精品社区| 亚洲精品字幕| 亚洲毛片视频| aⅴ色国产欧美| 亚洲精品日本| 日韩一级黄色片| 亚洲美女黄网| 亚洲精品视频一区| 亚洲精品黄网在线观看| 亚洲人成毛片在线播放女女| 精品成人在线视频| 激情欧美一区二区| 激情视频一区| 亚洲国产毛片完整版| 亚洲第一精品影视| 亚洲精品乱码久久久久久久久 | 亚洲第一福利社区| 亚洲国产精品va在线观看黑人 | 久久这里有精品视频| 久久婷婷色综合| 免费成人性网站| 欧美福利影院| 欧美日韩国产成人在线91| 欧美三级第一页| 国产精品视频专区| 在线观看日产精品| 日韩视频精品在线| 亚洲免费人成在线视频观看| 欧美在线观看网址综合| 久久网站免费| 欧美日韩免费一区| 国产欧美日韩中文字幕在线| 国产一区自拍视频| 亚洲肉体裸体xxxx137| 亚洲视频在线播放| 欧美主播一区二区三区美女 久久精品人| 久久福利毛片| 欧美日韩国产综合久久| 国产综合久久久久影院| 亚洲精品乱码久久久久久久久|