我在手机和电脑之间创建了一个短信通信应用程序。
我有一个关于objectclass的问题,我想通过UDP套接字进行传输。
我的对象名为Message,它实现了serializable。
我有一个带有服务器应用程序的Java项目和带有客户端应用程序的Android项目。我的问题是我无法从java项目中将Message.java实现到android项目中,也没有其他方式,我必须在两个项目中制作该类的副本。然后我得到这个错误: 线程“main”中的异常java.lang.ClassNotFoundException:AndroidApp.Message
这是我的Android应用程序:
@Override
public void onReceive(Context context, Intent intent){
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null){
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
Message message = new Message(msgs[i].getOriginatingAddress(), msgs[i].getMessageBody().toString());
try {
sendMessageToServer(message);
}catch(Exception e);
private void sendMessageToServer(Message m) throws IOException {
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutput oo = new ObjectOutputStream(bStream);
oo.writeObject(m);
oo.close();
byte[] serializedMessage = bStream.toByteArray();
InetAddress IPAddress = InetAddress.getByName("10.0.2.2");
DatagramSocket clientSocket = new DatagramSocket();
DatagramPacket sendPacket = new DatagramPacket(serializedMessage, serializedMessage.length, IPAddress, 8080);
clientSocket.send(sendPacket);
clientSocket.close();
}
我的Message类只是Message(String phoneNum,String msg)。
我的服务器看起来像这样:
public class Server {
public static void main(String args[]) throws Exception{
DatagramSocket serverSocket = new DatagramSocket(8080);
byte[] receiveData = new byte[100000];
while(true){
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
ObjectInputStream iStream = new ObjectInputStream(new ByteArrayInputStream(receivePacket.getData()));
Message message = (Message) iStream.readObject();
iStream.close();
System.out.println("RECEIVED FROM: " + message.getPhone() + ": " + message.getMessage());
}
}