client中的MulticastSocket没设端口号.

解决方案 »

  1.   

    java规范中明确指出,在静态方法里面不能够用this关键字,也不能直接调用成员变量,要调用只能间接的通过实力对象后.取。
      

  2.   

    还有成员函数里面不能声明静态变量;
    你的程序如下改后就可以了
     public static void main(String args[])
      {
         Server a=new Server ();
         a.kk();
      }
      

  3.   

    还有成员函数里面不能声明静态变量;
    你的程序如下改后就可以了
     public static void main(String args[])
      {
         Server a=new Server ();
         a.kk();
      }
      

  4.   


      public static void main(String args[])
      {
         this.kk();
      }
    你认为这里的  this 是哪个对象呢?
      

  5.   

    所以说 普通成员函数 才能使用this 
    静态成员函数就不可使用this
      

  6.   

    所以说 普通成员函数 才能使用this 
    静态成员函数就不可使用this
      

  7.   

    即:
    服务端:(Server.java)
       
      public static void main(String args[])
      {
         this.kk();   ----->(改为)new Server().start();
      }它还是无法进行传输????
      

  8.   

    不好意思写错了:
    应该是:
    服务端:(Server.java)
       
      public static void main(String args[])
      {
         this.kk();   ----->(改为)new Server().kk();
      }它还是无法进行传输????
      

  9.   

    import java.net.*;
    import java.io.*;
    public class Server extends Thread{  public static void main(String args[])
      {
         Server a=new Server ();
         a.kk();
      }
      public void kk(){
       try{                
        
        Thread thrd=new Thread(this);
        thrd.start();                  
       }catch(Exception ex){}  
      }   
      
      public void run(){
       while(true)
       {
         try{
      
            byte[] msg=new byte[1024];
            InetAddress group = InetAddress.getByName("228.5.6.7");
            MulticastSocket socket1=new MulticastSocket(6789);
            socket1.joinGroup(group);
            DatagramPacket hi = new DatagramPacket(msg, msg.length);  
            socket1.receive(hi);
            System.out.println(hi.getData());         
         }catch(Exception ex){}      
       }
      } 
    }  
    import java.net.*;
    import java.io.*;
    public class client
    {
       public static void main(String args[])
       {
          try{
           String msg = "Hello";
           InetAddress group = InetAddress.getByName("228.5.6.7");
           MulticastSocket s = new MulticastSocket();
           s.joinGroup(group);
           DatagramPacket hi = new DatagramPacket(
                            msg.getBytes(), msg.length(),group, 6789);
                                 
           s.send(hi);
          }catch(Exception ex){}
     
       }   
    }
    你原先帮定的端口有问题还有其他的问题我都该了,,我现在都给你编译通过了,你看看吧
      

  10.   

    收到你的短信,无非考虑以下几个问题:
    1.程序结构总感觉有些不舒服。倘若是我写的话,我不会打开一个线程,然后在线程里面while(true){}接收socket信号。相反,我会在主线程里面有一个while(true) {}的循环,并且在这个循环里监听端口,倘若收到请求以后,我会再去开一个线程,为这个请求服务。
    大概是这样
    public void kk() {
        while(true) {
            //listening the socket
            //when someone send a message
            //new a thread SocketService
        }
    }public class SocketService() implements Runnable {
    ......
    }2.倘若程序出错,检查你的端口是否被人占用等。测试阶段最好把异常打印出来。也方便调试。
      

  11.   

    收到了你的短信,由于那时开会,所以没有及时帮你,希望谅解;基于你的程序无非犯了点小错误,和大概服务器没有配置好;修改如下,欢迎讨论:
    //client(客户端):
    import java.net.*;
    import java.io.*;
    public class client
    {
       public static void main(String args[])
       {
          try{
           String msg = "Hello";
           InetAddress group = InetAddress.getByName("228.5.6.7");
           MulticastSocket s = new MulticastSocket();
           s.joinGroup(group);
           DatagramPacket hi = new DatagramPacket(
                            msg.getBytes(), msg.length(),group, 6789);       s.send(hi);
          }catch(Exception ex){}   }
    }
    //Server:(服务端)
     import java.net.*;
    import java.io.*;
    public class Server extends Thread{  public static void main(String args[])
      {
         //this.kk();静态方法不能应用this关键字,且不能 直接调用成员变量,应用时只能间接调用,
        //比如以下实现就是间接调用
             Server s =new Server();
            s.kk();
      }
      public void kk(){
       try{    Thread thrd=new Thread(this);
        thrd.start();
       }catch(Exception ex){}
      }  public void run(){
       while(true)
       {
         try{        byte[] msg=new byte[1024];
            InetAddress group = InetAddress.getByName("228.5.6.7");
            MulticastSocket socket1=new MulticastSocket(6089);
            socket1.joinGroup(group);
            DatagramPacket hi = new DatagramPacket(msg, msg.length);
            socket1.receive(hi);
            System.out.println(hi.getData());
         }catch(Exception ex){}
       }
      }
    }//以上我已编译调试通过,服务器使用jb7自带tomcat4.0