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+"\n";
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 }

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

  

  

时间: 2024-10-06 09:12:19

UDP网路会议室的代码的相关文章

Linux高危漏洞曝光:Linux 内核 ipv4/udp.c 远程恣意代码执行

漏洞描述 Linux kernel是美国Linux基金会发布的操作体系Linux所使用的内核.Linux kernel 4.5之前的版别中的udp.c文件存在安全缝隙,Linux内核中的udp.c答应长途攻击者经过UDP流量履行恣意代码,这些流量会在履行具有MSG_PEEK象征的recv体系调用时触发不安全的第2次校验和核算,长途攻击者可精心构造数据履行恣意代码,进一步致使本地提权,归于高危缝隙.但由于现实状况中,根据UDP协议的效劳时MSG_PEEK象征在实际使用的状况较少,受该长途指令履行缝

Java UDP实现聊天功能代码

我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管对方是否正确接受到与否,所以当网络性能不好时它容易出现丢包的问题.(注意:UDP是基于数据报为单位进行传输的,而TCP是一种基于流进行传输的) 但是UDP很好的模拟了我们呢平时聊天的方式,可以很好的实现连续多次发送和接受,也就是简单的QQ聊天的功能. 现在来简要介绍Java中有关UDP编程相关的类:

java UDP网路编程

大家都知道java中的socket网络编程,而其采用的协议分别有tcp和udp协议两种. 通常的理解tcp协议类似于打电话,udp类似于发短信.前者是线程安全的,但是效率比较低.后者则刚好相反. 今天就做个demo来了解一下udp网络编程. 首先是客户端: package javasocket.demo; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddres

【Java TCP/IP Socket】UDP Socket(含代码)

转载请注明出处:http://blog.csdn.net/ns_code/article/details/14128987 UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接.实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上添加了端口: 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据. Java通过DatagramPacket类和DatagramSocket类来使用UDP套接字

Udp打洞原理和源代码。

所谓udp打洞就是指客户端A通过udp协议向服务器发送数据包,服务器收到后,获取数据包,并且 可获取客户端A地址和端口号.同样在客户端B发送给服务器udp数据包后,服务器同样在收到B发送过来 的数据包后获取B的地址和端口号,将A和B的地址与端口号分别发送给对方,这样双方可以继续用UDP协议 通信.这么做有什么用呢?因为对于一些应用或者需求,需要两个客户端临时做一些通信,而这种通信 不需要建立tcp就可以完成,所以才去udp打洞. 下面附上测试代码: 头文件 // udphole.cpp : 定义

UDP和多线程服务器

UDP: UDP是数据报文传输协议,这个传输协议比较野蛮,发送端不需要理会接收端是否存在,直接就发送数据,不会像TCP协议一样建立连接.如果接收端不存在的话,发送的数据就会丢失,UDP协议不会去理会数据的安全性,而且在网络繁忙.堵塞的时候会丢失一些数据,俗称"丢包". 但是UDP协议的传输速度很快,基本是你的网络有多快就传输多快.所以游戏.直播.语音电话等功能都是得靠UDP来实现 ,TCP都是基于UDP开发的,就是在UDP上增加了各种安全措施保护了数据的安全,牺牲了传输的速度. UDP

java 25 - 4 网络编程之 UDP协议传输思路

UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. E:发送端与接收端是两个独立的运行程序. UDP传输-发送端思路 UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) UDP传输-发送端代码 1 public static void main(Str

安卓UDP通信

功能: 实现了单次一发一收: import java.net.*; import java.io.*; public class udpRecv { /* * 创建UDP传输的接收端 * 1.建立udp socket服务,因为是要接收数据,必须指明端口号 * 2,创建数据包,用于存储接收到的数据.方便用数据包对象的方法处理数据 * 3,使用socket服务的receive方法将接收的数据存储到数据包中 * 4,通过数据包的方法解析数据包中的数据 * 5,关闭资源 *抛一个大异常:IOExcept

socketserver.py代码阅读笔记

socketserver.py源码阅读笔记 前言 一直想弄清楚一个http server和Web框架的工作原理.但以我目前的实力,阅读一个http server或web框架代码还是太难了.后来又对异步IO.并发产生的兴趣.前几天做一个大作业需要写几个各种不同并发模型的TCP Server,写完才想起Python有现成的socketsever模块可以用,完全不需要自己写.于是对比了一下我写的代码和socketsever.py,发现我写的真没socketsever写的好.我的代码经验还是太少了.于是