Проблема в вызове функции strlen!
strlen(str)
Потому что вы не установили терминатор в конце строки.
Добавление следующего кода после цикла инициализации устранит проблему:
str[235435]='\0';
В случае, если у любого есть подобная проблема, я выяснил ответ сам. Вот является мой выход () методом:
public void exit() throws RemoteException
{
try{
// Unregister ourself
Naming.unbind(mServerName);
// Unexport; this will also remove us from the RMI runtime
UnicastRemoteObject.unexportObject(this, true);
System.out.println("CalculatorServer exiting.");
}
catch(Exception e){}
}
На самом деле просто отмена регистрации и немедленный вызов System.exit не завершает работу чисто. Он в основном разрывает соединение, прежде чем сообщить клиенту, что сообщение было завершено. Что работает, так это запустить небольшой поток, который завершает работу системы, например:
public void quit() throws RemoteException {
System.out.println("quit");
Registry registry = LocateRegistry.getRegistry();
try {
registry.unbind(_SERVICENAME);
UnicastRemoteObject.unexportObject(this, false);
} catch (NotBoundException e) {
throw new RemoteException("Could not unregister service, quiting anyway", e);
}
new Thread() {
@Override
public void run() {
System.out.print("Shutting down...");
try {
sleep(2000);
} catch (InterruptedException e) {
// I don't care
}
System.out.println("done");
System.exit(0);
}
}.start();
}
Поток необходим для того, чтобы позволить чему-то случиться в будущем, но все еще возвращается из метода выхода.