UDP网路会议室的代码
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网路会议室的代码的更多相关文章
- 【Java TCP/IP Socket】UDP Socket(含代码)
UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接.实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上 ...
- java UDP网路编程
大家都知道java中的socket网络编程,而其采用的协议分别有tcp和udp协议两种. 通常的理解tcp协议类似于打电话,udp类似于发短信.前者是线程安全的,但是效率比较低.后者则刚好相反. 今天 ...
- Java UDP实现聊天功能代码
我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管 ...
- Java UDP实现聊天功能代码【转】
感谢大佬大佬!!!:https://www.cnblogs.com/woshijpf/p/3735684.html 我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务 ...
- Udp打洞原理和源代码。
所谓udp打洞就是指客户端A通过udp协议向服务器发送数据包,服务器收到后,获取数据包,并且 可获取客户端A地址和端口号.同样在客户端B发送给服务器udp数据包后,服务器同样在收到B发送过来 的数据包 ...
- UDP传输
@@@基于UDP的客服端代码 public class Service { // 服务器 public static void main(String[] args) { DatagramPacket ...
- 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...
- java 25 - 4 网络编程之 UDP协议传输思路
UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. ...
随机推荐
- 第一个Sprint
项目名字:四则运算APP 开发环境:java 团队名称:会飞的小鸟 团队成员:陈志棚 李炫宗 刘芮熔 徐侃 罗伟业 一.经过宿舍世纪讨论后我们剔除了一些不合理的设计,比如网站管理员这一部分在 ...
- Python 安装 OpenCV 遇到的问题
从 python下了 opencv_python-3.3.1+contrib-cp36-cp36m-win_amd64.whl [python 3.6 os win10 64 IDE Pychar ...
- MySQL基础~~表结构操作
登录数据库服务器 mysql -h127.0.0.1 -uroot -p123456 创建数据库 create database test; 显示所有数据库 show databases; 指定要操作 ...
- HDU 2032 杨辉三角
http://acm.hdu.edu.cn/showproblem.php?pid=2032 Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考 ...
- laravel 共享session问题总结
我现在有一个A系统已经上线了,但是要开始研发另外一个功能,我打算把这个功能独立成一个B系统出来,放在其他域名下面,打算在这个A系统登录后,里面一个连接跳转到B系统,看到一些资料说用到共享Session ...
- 软件工程_1st weeks
本周为软件工程课的第一周,本周主要完成了三个工作:了解了github并使用.拜读了<构建之法>并开通了博客以及完成了四则运算的代码实现. 对于第一项工作github的安装和使用,花费了5个 ...
- BZOJ3091城市旅行——LCT区间信息合并
题目描述 输入 输出 样例输入 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 样例输出 16/3 6/1 提示 对于所有数据满足 1& ...
- ROADS POJ - 1724(分层最短路)
就是在最短路的基础上 多加了一个时间的限制 , 多一个限制多一维就好了 记住 分层最短路要用dijistra !!! #include <iostream> #include < ...
- 05 Zabbix triggers--action--event
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 05 Zabbix triggers--action--event 动作action: 在配置好监 ...
- [hgoi#2019/2/16t3]psolve
题目描述 Dustar有n道题目要做.他的月薪是m元. 由于题目是一流的难题,所以Dustar不得不找个人来帮(代)助(替)他写作业. 找人写作业不是免费的,但是他们能保证在一个月内做出任何题目.每做 ...