关于JAVAweb程序,使用JAVA socket实现TCP点对点聊天和UDP群组组播。为什么无法运行呢?

关于JAVAweb程序,使用JAVA socket实现TCP点对点聊天和UDP群组组播。为什么无法运行呢?思路是通过收到的消息格式判断服务器发送过来的消息,再进行响应,如果服务器发送boradcast,则开始接受组播信息。

while (true) {
            try {
                String msg = br.readLine();//读取服务器是否发送了消息给该客户端
                String[] strs = msg.split("#");
                System.out.print(msg+" msg");



                //判断是否为服务器发来的登陆信息
                if (strs[0].equals("LOGIN")) {
                    if (!strs[1].equals(nickName)) {//不是本人的上线消息就显示,本人的不显示
                        jta.append(strs[1] + "已上线\n");
                        dl.addElement(strs[1]);//DefaultListModel来更改JList的内容
                        userList.repaint();
                    }
                } else if (strs[0].equals("MSG")) {//接到服务器发送消息的信息
                    if (!strs[1].equals(nickName)) {//别人说的
                        jta.append(strs[1] + "说:" + strs[2] + "\n");
                    } else {
                        jta.append("我说:" + strs[2] + "\n");
                    }
                } else if (strs[0].equals("USERS")) {//USER消息,为新建立的客户端更新好友列表
                    dl.addElement(strs[1]);
                    userList.repaint();
                } else if (strs[0].equals("ALL")) {
                    jta.append("系统消息:" + strs[1] + "\n");
                } else if (strs[0].equals("OFFLINE")) {
                    if (strs[1].equals(nickName)) {//如果是自己下线的消息,说明被服务器端踢出聊天室,强制下线
                        javax.swing.JOptionPane.showMessageDialog(this, "您已被系统请出聊天室!");
                        System.exit(0);
                    }
                    jta.append(strs[1] + "已下线\n");
                    dl.removeElement(strs[1]);
                    userList.repaint();
                } else if ((strs[2].equals(nickName) || strs[1].equals(nickName)) && strs[0].equals("SMSG")) {
                    if (!strs[1].equals(nickName)) {
                        jTextArea.append(strs[1] + "说:" + strs[3] + "\n");
                        jta.append("系统提示:" + strs[1] + "私信了你" + "\n");
                    } else {
                        jTextArea.append("我说:" + strs[3] + "\n");
                    }
                } else if ((strs[2].equals(nickName) || strs[1].equals(nickName)) && strs[0].equals("FSMSG")) {
                    sender = strs[1];
                    receiver = strs[2];
                    //接收方收到私聊消息,自动弹出私聊窗口
                    if (!strs[1].equals(nickName)) {
                        FirstSecret = false;
                        jTextArea.append(strs[1] + "说:" + strs[3] + "\n");
                        jta.append("系统提示:" + strs[1] + "私信了你" + "\n");
                        handleSec(strs[1]);
                    } else {
                        jTextArea.append("我说:" + strs[3] + "\n");
                    }
                } else if (strs[0].equals("Broadcast")){
                    System.out.print(" 666");

                    try {
                        MulticastSocket socket = new MulticastSocket(3000);
                        InetSocketAddress group=new InetSocketAddress("224.0.0.1",3000);
                        socket.joinGroup(group,null);
                        byte[] buffer = new byte[1024];
                        DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

                        socket.receive(packet);
                        String message = new String(packet.getData(), 0, packet.getLength());
                        String[] strss = message.split("#");

                        if (strss[0].equals("GR1")) {

                            jTextArea.append("群组1管理员说" + strs[1] + "\n");
                        }

                        socket.leaveGroup(group,null);
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }

            } catch (Exception ex) {//如果服务器端出现问题,则客户端强制下线
                javax.swing.JOptionPane.showMessageDialog(this, "您已被系统请出聊天室!");
                System.exit(0);
            }

你这代码和问题乱七八糟
1.如果你是个web程序,那应该是http协议才对,怎么是socket实现的tcp侦听,到底是什么
2.你的代码怎么一开始就直接read,connect的代码呢
3.你想同时实现TCP通信和UDP通信,那直接另外开个线程接收UDP就好了,不要搞一堆同步机制
4.想要组播,只能局域网搞,跨路由器不可以组播

各位我愿意有偿悬赏