模拟路灯(UDP服务器无连接不稳定传输)

在这里插入图片描述
package screen;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 Client extends JFrame implements Runnable,ActionListener
{

int port;
InetAddress group=null;//创建地址
MulticastSocket socket=null;//创建多点接入套接字
JButton ince = new JButton("启动服务:....");//创建按钮
JButton stop = new JButton("停止服务:....");
JButton shangchuang =new JButton("开灯");
JButton xiafa =new JButton("关灯");

JTextArea inceAr =new JTextArea(10, 10);//创建接受广播的文本域
JTextArea inced =new JTextArea(10, 10);

Thread thread;
boolean b = false;
public Client()
{
	super("UDP服务器"); 
	setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	thread = new Thread(this);
	ince.addActionListener(this);
	stop.addActionListener(this);
	shangchuang.addActionListener(this);
	xiafa.addActionListener(this);
	
	inceAr.setForeground(Color.blue);
	
	
	JPanel south=new JPanel();
	JPanel center=new JPanel();
	JPanel north = new JPanel();
	north.add(inceAr);
	north.add(inced);
	south.add(ince);
	south.add(stop);
	center.add(shangchuang);
	center.add(xiafa);

	add(south, BorderLayout.SOUTH);
	add(north,BorderLayout.WEST);
	add(center,BorderLayout.CENTER);
	
	validate();
	port=9898;
	try {
		group = InetAddress.getByName("224.255.10.0");//绑定接收地址
		socket=new MulticastSocket(port);//绑定多点广播套接字
		socket.joinGroup(group);//加入广播组
	} catch (Exception e) {
		e.printStackTrace();
	}
	
}
@Override
public void run() {
while(true)
{
	byte data[]=new byte[1024];
	DatagramPacket packet=null;
	packet=new DatagramPacket(data, data.length, group, port);
	
	
	try {
		socket.receive(packet);//接受数据包
		String message =new String(packet.getData(), 0,packet
				.getLength());//获取包中的内容
		inceAr.setText("所连接的终端\n"+message);
		inced.setText("上传和下传的列表:"+message);
		
		
		
	} catch (Exception e) {
		e.printStackTrace();
	}
	if(b==true)
	{
		break;
	}
	
	
}
	
}

@Override
public void actionPerformed(ActionEvent e) {
	if(e.getSource()==ince)
	{
		ince.setBackground(Color.green);
		if(!(thread.isAlive()))
		{
			thread =new Thread(this);
		}
		thread.start();
		b=false;
		
	}
	if(e.getSource()==xiafa)
	{
		xiafa.setBackground(Color.red);
	
		b=true;
	}
	if(e.getSource()==shangchuang)
	{
		shangchuang.setBackground(Color.green);
	
		
	}
	if(e.getSource()==stop)
	{
		stop.setBackground(Color.red);
	    
		
	}
	
}
public static void main(String[] args) {
	Client c=new Client();
	c.setVisible(true);
	c.setSize(490, 200);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值