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

  MainWindow代码:

  

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets; namespace NetWork
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
IPAddress ip;
public MainWindow()
{ IPAddress [] ips=Dns .GetHostAddresses (Dns.GetHostName());
foreach (var v in ips )
{
if ( v .AddressFamily ==AddressFamily.InterNetwork )
{
ip = v;
}
}
InitializeComponent();
} private void button1_Click(object sender, RoutedEventArgs e)
{ Client c1 = new Client();
c1.Title = "客户端1";
c1.Local = new IPEndPoint(ip, );
c1.username = "张三";
c1.Show(); Client c2 = new Client();
c2.Title = "客户端2";
c2.Local = new IPEndPoint(ip, );
c2.username = "李四";
c2.Show(); Client c3 = new Client();
c3.Title = "客户端3";
c3.Local = new IPEndPoint(ip, );
c3.username = "王五";
c3.Show();
}
}
}

  Client代码:

  

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
using System.Threading; namespace NetWork
{
/// <summary>
/// Client.xaml 的交互逻辑
/// </summary>
public partial class Client : Window
{
public IPEndPoint Local ;
public IPEndPoint Remote=null;
public UdpClient udpclient;
public string username {
get { return textBox1 .Text; }
set { textBox1.Text = value; }
}
private IPAddress multicastAddress = IPAddress.Parse("224.0.1.10");
private bool isExit = false;
public Client()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
button3.IsEnabled = false;
udpclient = new UdpClient(Local);
udpclient.JoinMulticastGroup(multicastAddress); }
public void ReceiveMessage( )
{
while (isExit ==false)
{
try
{
byte [] result = udpclient.Receive(ref Remote);
string message = Encoding.Unicode.GetString(result);
string[] array = message.Split(',');
string command = array[]; switch (command)
{
case "Login":
string nm = array[];
AddUser(nm );
break;
case "Logout":
RemoveUser(array [] );
break;
case "Say":
AddSay(array [] +":"+array []);
break;
default:
break;
}
}
catch
{
break;
}
}
} private void button3_Click(object sender, RoutedEventArgs e)
{
SendMessage("Say,"+username+","+textBox2 .Text );
} private void button1_Click(object sender, RoutedEventArgs e)
{ Thread t1 = new Thread(ReceiveMessage);
t1.Start();
SendMessage("Login," + username); button1.IsEnabled = false;
button3.IsEnabled = true; }
public void SendMessage(string message)
{
byte[] bytes = Encoding.Unicode.GetBytes(message); for (int i = ; i < ; i++)
{
udpclient.Send(bytes, bytes.Length, multicastAddress.ToString(), i);
} }
private void RemoveUser(string name)
{
Action act = delegate()
{
listBox1.Items.Remove(name); };
listBox1.Dispatcher.Invoke(act );
}
private void AddUser( string name1)
{
Action act = delegate()
{
listBox1.Items.Add(name1);
};
listBox1.Dispatcher.Invoke(act); }
private void AddSay(string message )
{
Action act = delegate()
{
textBlock1.Text += message+"\n";
};
textBlock1.Dispatcher.Invoke(act); } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
isExit = true;
SendMessage("Logout,"+username);
udpclient.DropMulticastGroup(multicastAddress);
udpclient.Close(); } }
}

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

  

  

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

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

    UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接.实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上 ...

  2. java UDP网路编程

    大家都知道java中的socket网络编程,而其采用的协议分别有tcp和udp协议两种. 通常的理解tcp协议类似于打电话,udp类似于发短信.前者是线程安全的,但是效率比较低.后者则刚好相反. 今天 ...

  3. Java UDP实现聊天功能代码

    我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管 ...

  4. Java UDP实现聊天功能代码【转】

    感谢大佬大佬!!!:https://www.cnblogs.com/woshijpf/p/3735684.html 我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务 ...

  5. Udp打洞原理和源代码。

    所谓udp打洞就是指客户端A通过udp协议向服务器发送数据包,服务器收到后,获取数据包,并且 可获取客户端A地址和端口号.同样在客户端B发送给服务器udp数据包后,服务器同样在收到B发送过来 的数据包 ...

  6. UDP传输

    @@@基于UDP的客服端代码 public class Service { // 服务器 public static void main(String[] args) { DatagramPacket ...

  7. 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战

    概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...

  8. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

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

    UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. ...

随机推荐

  1. docker安装后启动出现错误

    重启报错: [root@localhost ~]# systemctl restart docker Job for docker.service failed because the control ...

  2. 链表数据结构(C/C++语言实现)

    注意:没有使用malloc和free:加了一个头文件,用于清屏和暂停:还有就是一个错误特别容易被忽略,那就是主函数中声明了LinkList p,然后就直接创建链表,忘了给p分配空间.一定要先初始化链表 ...

  3. Linux curl 一例

    root@PC-RENGUOQIANG:~# curl http://kermit:kermit@192.168.66.182:8080/activiti-rest/service/repositor ...

  4. Selenium vs TestStudio,Selenium Grid vs F2Test

    Selenium vs TestStudio,不知道差异在哪里? Selenium Grid vs F2Test,后者更优. 用Selenium + FireFox做了一个单机抓图,想要扩展成集群的话 ...

  5. java中的随机数Random

    java中一般有两种随机数,一个是Math中random()方法,一个是Random类. 一.Math.random()  :     随即生成0<x<1的小数 实例:如何写,生成随机生成 ...

  6. 一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS

    一台服务器,两个域名 首先购买https,获取到CA证书,两个域名就得到两套证书 第二步:现在就是Nginx和OpenSSL的安装与配置(这里注意,一般情况下一个IP只支持一个SSL证书,那么我们现在 ...

  7. RAID 磁盘阵列说明

    Copy From wiki RAID档次 最少硬盘 最大容错 可用容量 读取性能 写入性能 安全性 目的 应用产业 单一硬盘 (引用) 0 1 1 1 无     JBOD 1 0 n 1 1 无( ...

  8. k8s master 节点加入到可以调配node节点中的命令

    kubectl taint nodes --all node-role.kubernetes.io/master- 应该就可以了  效果再观察 效果为

  9. [转载] 虚拟机下面安装windows+oracle ASM的过程

    转帖:https://www.2cto.com/database/201303/195261.html 最开始的时候 我找了一个挺好的教程 安装过 但是已经找不到了,先转载一下这个内容,后续再测试完善 ...

  10. js 实现List

    js 实现List 列表是一组有序的数据.每个列表中的数据项称为元素.在 JavaScript 中,列表中的元素可以是任意数据类型. 我们可以根据数组的特性来实现List. List 抽象数据类型定义 ...