zoukankan      html  css  js  c++  java
  • UDP网路会议室的代码

      UDP网络会议室视频已经录制好,这里贴上代码仅供参考

      MainWindow代码:

      

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Windows;
     6 using System.Windows.Controls;
     7 using System.Windows.Data;
     8 using System.Windows.Documents;
     9 using System.Windows.Input;
    10 using System.Windows.Media;
    11 using System.Windows.Media.Imaging;
    12 using System.Windows.Navigation;
    13 using System.Windows.Shapes;
    14 using System.Net;
    15 using System.Net.Sockets;
    16 
    17 namespace NetWork
    18 {
    19     /// <summary>
    20     /// MainWindow.xaml 的交互逻辑
    21     /// </summary>
    22     public partial class MainWindow : Window
    23     {
    24         IPAddress ip;
    25         public MainWindow()
    26         {
    27            
    28              IPAddress [] ips=Dns .GetHostAddresses (Dns.GetHostName());
    29         foreach (var  v in ips )
    30        {
    31             if ( v .AddressFamily ==AddressFamily.InterNetwork )
    32             {
    33                 ip = v;
    34             }
    35         }
    36             InitializeComponent();
    37         }
    38 
    39         private void button1_Click(object sender, RoutedEventArgs e)
    40         {
    41 
    42             Client c1 = new Client();
    43             c1.Title = "客户端1";
    44             c1.Local = new IPEndPoint(ip, 8001);
    45             c1.username = "张三";
    46             c1.Show();
    47 
    48             Client c2 = new Client();
    49             c2.Title = "客户端2";
    50             c2.Local = new IPEndPoint(ip, 8002);
    51             c2.username = "李四";
    52             c2.Show();
    53 
    54             Client c3 = new Client();
    55             c3.Title = "客户端3";
    56             c3.Local = new IPEndPoint(ip, 8003);
    57             c3.username = "王五";
    58             c3.Show();
    59         }
    60     }
    61 }

      Client代码:

      

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Windows;
      6 using System.Windows.Controls;
      7 using System.Windows.Data;
      8 using System.Windows.Documents;
      9 using System.Windows.Input;
     10 using System.Windows.Media;
     11 using System.Windows.Media.Imaging;
     12 using System.Windows.Shapes;
     13 using System.Net;
     14 using System.Net.Sockets;
     15 using System.Threading;
     16 
     17 namespace NetWork
     18 {
     19     /// <summary>
     20     /// Client.xaml 的交互逻辑
     21     /// </summary>
     22     public partial class Client : Window
     23     {
     24         public IPEndPoint Local  ;
     25         public IPEndPoint Remote=null;   
     26         public UdpClient udpclient;
     27         public string username {
     28             get { return textBox1 .Text; }
     29             set { textBox1.Text = value; }
     30         }
     31         private IPAddress multicastAddress = IPAddress.Parse("224.0.1.10");
     32         private bool isExit = false;
     33         public Client()
     34         {
     35             InitializeComponent();
     36         }
     37         private void Window_Loaded(object sender, RoutedEventArgs e)
     38         {
     39             button3.IsEnabled = false;
     40             udpclient = new UdpClient(Local);
     41             udpclient.JoinMulticastGroup(multicastAddress);
     42            
     43         }
     44         public void ReceiveMessage( ) 
     45         {
     46             while (isExit ==false)
     47             {
     48                 try
     49                 {
     50                     byte [] result = udpclient.Receive(ref Remote);
     51                     string message = Encoding.Unicode.GetString(result);           
     52                     string[] array = message.Split(',');
     53                     string command = array[0];
     54                     
     55                     switch (command)
     56                     {
     57                         case "Login":
     58                             string nm = array[1];
     59                             AddUser(nm );
     60                             break;
     61                         case "Logout":
     62                             RemoveUser(array [1] );
     63                             break;
     64                         case "Say":
     65                             AddSay(array [1] +":"+array [2]);
     66                             break;
     67                         default:
     68                             break;
     69                     }
     70                 }
     71                 catch 
     72                 {
     73                     break;
     74                 }
     75             }
     76         }
     77 
     78         private void button3_Click(object sender, RoutedEventArgs e)
     79         {
     80             SendMessage("Say,"+username+","+textBox2 .Text );
     81         }
     82 
     83         private void button1_Click(object sender, RoutedEventArgs e)
     84         {
     85 
     86             Thread t1 = new Thread(ReceiveMessage);
     87             t1.Start();
     88             SendMessage("Login," + username);
     89             
     90             button1.IsEnabled = false;
     91             button3.IsEnabled = true;
     92 
     93         }
     94         public void SendMessage(string message)
     95         {
     96             byte[] bytes = Encoding.Unicode.GetBytes(message);
     97    
     98             for (int i = 8001; i < 8004; i++)
     99             {
    100                 udpclient.Send(bytes, bytes.Length, multicastAddress.ToString(), i);
    101             }    
    102            
    103         }
    104         private void RemoveUser(string name) 
    105         {
    106             Action act = delegate()
    107             {
    108                 listBox1.Items.Remove(name);
    109                 
    110             };
    111             listBox1.Dispatcher.Invoke(act );
    112         }
    113         private void AddUser( string name1) 
    114         {
    115             Action act = delegate()
    116            {
    117                 listBox1.Items.Add(name1);
    118             };
    119             listBox1.Dispatcher.Invoke(act);
    120             
    121         }
    122         private void AddSay(string message ) 
    123         {
    124             Action act = delegate() 
    125             {
    126                 textBlock1.Text += message+"
    ";
    127             };
    128             textBlock1.Dispatcher.Invoke(act);
    129             
    130         }
    131 
    132         private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    133         {
    134             isExit = true;
    135             SendMessage("Logout,"+username);
    136             udpclient.DropMulticastGroup(multicastAddress);        
    137             udpclient.Close();       
    138            
    139         }
    140            
    141     }
    142 }

      一个普通的本科大学生,平常的时候无所事事不学习,临近考试却拼命的补习.几天时间就能学半学期的知识,早干嘛去了.悲哀.

      

      

  • 相关阅读:
    【JZOJ6271】【NOIP提高组A】锻造 (forging)
    【JZOJ6272】【NOIP提高组A】整除 (division)
    【JZOJ3397】【GDOI2014模拟】雨天的尾巴
    input绑定datapicker控件后input再绑定blur或者mouseout等问题
    解决每次打开office 2010显示正在配置的问题
    Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法
    Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法
    本地同时启动两个tomcat
    转: ExtJS中xtype一览
    web前端基础知识及快速入门指南
  • 原文地址:https://www.cnblogs.com/yunquan/p/5618505.html
Copyright © 2011-2022 走看看