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);
}
}