UDP通信

UDP通信 :主要的方向是一对多通信方式 UDP通信就是一下子可以通信多个对象,这就是UDP对比TCP的优势,UDP它的原理  就是开启服务端 然后客户端依次连接客户端  于TCP不同的是他不会一个一个跟客户端说而是跟微信群聊一样它在给这些客户端发送消息 缺点 :服务端会发送消息给到客户端  但是有些客户端并不会接收到消息, 或者没有看到消息  。这就是UDP的缺点, 不能保证所有客户端都能收到消息。UDP对比于TCP的缺点,就是不能保证每一个人都能够接收到消息 ,但是优点就是可以一下子跟好多个对象进行通信,但是不能保证可靠度,以下由代码讲解:

服务端类代码:


 
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
//广播  先运行
public class Notification  extends Thread{
	String weather = "节目预报:八点有大型晚会,请收听";//发送消息
	int port = 9898;//端口号
	InetAddress iaddress = null;
	MulticastSocket socket = null;//多点广播套接字
	
	Notification(){
		try {
			iaddress = InetAddress.getByName("224.255.10.0");//地址
			socket = new MulticastSocket(port);//实例化多点广播套接字
			socket.setTimeToLive(1);//指定发送范围是本地网络
			socket.joinGroup(iaddress);//加入广播组
		}catch(IOException e){
			e.printStackTrace();//输出异常信息
		}
	
	}
	public void run(){//run方法
		while(true) {
			DatagramPacket packet = null;//数据包
			byte data[]=weather.getBytes();//字符串消息的字节数组
			packet =  new  DatagramPacket(data,data.length,iaddress,port);//将数据打包
			System.out.println(weather);//控制台打印消息
			try {
				socket.send(packet);//发送数据
				sleep(3000);//让线程休眠3000毫秒
			}catch(IOException e){
				e.printStackTrace();
			}catch(InterruptedException e) {
				e.printStackTrace();
			}
		}	
			}
	public static void main(String[]args) {
		Notification w =new Notification();
		w.start();//启动线程
	}
}

客户端:


 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
//接收  后运行
public class Receive extends JFrame implements Runnable, ActionListener {
	int port ;//端口
	InetAddress group =null;//广播组地址
	MulticastSocket socket = null;//多点广播套接字对象
	JButton inceBtn = new JButton("开始接收");
	JButton stopBtn = new JButton("停止接收");
	JTextArea inceAr = new JTextArea(10,10);//显示接收广播的文本域
	JTextArea inced = new JTextArea(10,10);
	Thread thread ;
	boo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值