클래스 객체를 서버에 보내는 클라이언트가 있습니다. 서버는 해당 클래스의 메소드를 호출하고 결과를 리턴해야합니다. 프로그램을 실행할 때 java.lang.ClassNotFoundException : newclient.TestObject 예외가 발생합니다.자바 서버가 클라이언트로부터 객체를받지 못합니다.
server.java :
package newserve;
import java.net.*;
import java.io.*;
import java.lang.reflect.*;
public class SERVER {
public static void main(String[] args) {
int port = 9876;
try {
ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();
InputStream is = s.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
//read the first object from the socket
Object o1 = /*(Object)*/ois.readObject();
//Handling the first received object
if (o1 != null){
System.out.println("\nFROM SERVER - receiving class: " +
o1.getClass().getName());
System.out.println("\nWith these methods: \n");
//get all the methods into an array
Method[] methods = o1.getClass().getDeclaredMethods();
//print the methods
for(int i = 0; i < methods.length; i++)
System.out.println(methods[i]);
//invoking the first method with default constructor
Object a = methods[0].invoke(o1.getClass().newInstance(),
new Object[] {3, 5});
System.out.println("\nOutput of the first method: " + a);
}
//read the second object from the socket
Object o2 = ois.readObject();
System.out.println("\n\nFROM SERVER - receiving class: " +
o2.getClass().getName());
System.out.println("\nWith these: " + o2);
//close everything and shut down
is.close(); //close input stream
s.close(); //close the socket
ss.close(); //close the server's socket
}catch(Exception e){System.out.println(e);}
}
}
client.java :
package newclient;
import java.net.*;
import java.io.*;
public class CLIENT {
public static void main(String[] args) {
int port = 9876;
try{
Socket s = new Socket("localhost", port);
OutputStream os = s.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
Object to = new TestObject(); //create a new object
oos.writeObject(to); //send the object to the server
// create a new String object and send
oos.writeObject(new String("A String object from client"));
//close the connection
oos.close();
os.close();
s.close();
}catch(Exception e){System.out.println(e);}
}
}
TestObject.java :
고맙습니다!
널 (null)에 대한 테스트는 널 (null) 작성을 계획하지 않는 한 무의미합니다. – EJP