还有成员函数里面不能声明静态变量; 你的程序如下改后就可以了 public static void main(String args[]) { Server a=new Server (); a.kk(); }
还有成员函数里面不能声明静态变量; 你的程序如下改后就可以了 public static void main(String args[]) { Server a=new Server (); a.kk(); }
public static void main(String args[]) { this.kk(); } 你认为这里的 this 是哪个对象呢?
所以说 普通成员函数 才能使用this 静态成员函数就不可使用this
所以说 普通成员函数 才能使用this 静态成员函数就不可使用this
即: 服务端:(Server.java)
public static void main(String args[]) { this.kk(); ----->(改为)new Server().start(); }它还是无法进行传输????
不好意思写错了: 应该是: 服务端:(Server.java)
public static void main(String args[]) { this.kk(); ----->(改为)new Server().kk(); }它还是无法进行传输????
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{
你的程序如下改后就可以了
public static void main(String args[])
{
Server a=new Server ();
a.kk();
}
你的程序如下改后就可以了
public static void main(String args[])
{
Server a=new Server ();
a.kk();
}
public static void main(String args[])
{
this.kk();
}
你认为这里的 this 是哪个对象呢?
静态成员函数就不可使用this
静态成员函数就不可使用this
服务端:(Server.java)
public static void main(String args[])
{
this.kk(); ----->(改为)new Server().start();
}它还是无法进行传输????
应该是:
服务端:(Server.java)
public static void main(String args[])
{
this.kk(); ----->(改为)new Server().kk();
}它还是无法进行传输????
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){}
}
}
你原先帮定的端口有问题还有其他的问题我都该了,,我现在都给你编译通过了,你看看吧
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.倘若程序出错,检查你的端口是否被人占用等。测试阶段最好把异常打印出来。也方便调试。
//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