Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2008, 13:15   #1
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
Смущение J2ME и интернет

Хочу создать мобильное java-приложение, нужно подрубить поддержку сокетов. При попытке подключение выходит окно типа "Разрешить?", и зависает. Как после этого окна передать управление обратно приложению?
Заранее спасибо))
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 12.12.2008, 13:45   #2
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

код в студию, так сложно сказать что ты там делаеш )
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 12.12.2008, 14:05   #3
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

Код:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.Connection;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.Connector;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;

public class NewUin extends MIDlet implements CommandListener
{
  private Display display;
  private Form form1;
  private StreamConnection sock;
  private DataInputStream dis;
  private DataOutputStream dos;
  private Command ComExit,ComConnect;
  
  public NewUin()
  {
  }
  
  public void startApp()
  {
    display=Display.getDisplay(this);
    ComExit=new Command("Exit",Command.EXIT,1);
    ComConnect=new Command("Connect",Command.OK,1);
    form1=new Form("New UIN:");
    form1.addCommand(ComExit);
    form1.addCommand(ComConnect);
    form1.setCommandListener(this);
    display.setCurrent(form1);
  }
  
  public void pauseApp()
  {
    resumeRequest();
  }
  
  public void destroyApp(boolean b)
  {
    notifyDestroyed();
  }
  
  public void commandAction(Command c, Displayable d)
  {
    if(c==ComExit)
    {
      destroyApp(true);
    }
    if(c==ComConnect)
    {
      try
      {
        sock=(StreamConnection)Connector.open("socket://login.icq.com:5190");
        dos=sock.openDataOutputStream();
        dis=sock.openDataInputStream();
        byte[] buffer=new byte[10];
        dis.read(buffer);
        if(buffer[1]==1)
          form1.append("Hello");
        display.setCurrent(form1);
      }
      catch(IOException ex)
      {
        System.out.println("Error:"+ex.getMessage());
      }
    }
  }
  
}
вот..... и после попытки открытия сокета появляется в мобиле запрос на разрешение типа "разрешить передачу данных и тп..." ..... а после одобрения все зависает...... как передать от этого сообщения управление обратно приложению?
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 12.12.2008, 14:10   #4
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

А компилиться нормально?
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 12.12.2008, 14:25   #5
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

Код:
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class SocketMIDlet extends MIDlet
                    implements CommandListener, Runnable {

    private Display display;
    private Form addressForm;
    private Form connectForm;
    private Form displayForm;
    private TextField serverName;
    private TextField serverPort;
    private StringItem messageLabel;
    private StringItem errorLabel;
    private Command okCommand;
    private Command exitCommand;
    private Command backCommand;

    protected void startApp() throws MIDletStateChangeException {
        if (display == null) {
            initialize();
            display.setCurrent(addressForm);
        }
    }

    protected void pauseApp() {
    }

    protected void destroyApp(boolean unconditional)
                        throws MIDletStateChangeException {
    }

    public void commandAction(Command cmd, Displayable d) {
        if (cmd == okCommand) {
            Thread t = new Thread(this);
            t.start();
            display.setCurrent(connectForm);
        } else if (cmd == backCommand) {
            display.setCurrent(addressForm);
        } else if (cmd == exitCommand) {
            try {
                destroyApp(true);
            } catch (MIDletStateChangeException ex) {
            }
            notifyDestroyed();
        }
    }
продолжение следует...
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 12.12.2008, 14:25   #6
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

Код:
public void run() {
        InputStream is = null;
        OutputStream os = null;
        StreamConnection socket = null;

        try {
            String server = serverName.getString();
            String port = serverPort.getString();
            String name = "socket://" + server + ":" + port;
            socket = (StreamConnection)Connector.open(name, Connector.READ_WRITE);
        } catch (Exception ex) {
            Alert alert = new Alert("Invalid Address",
                        "The supplied address is invalid\n" +
                        "Please correct it and try again.", null,
                        AlertType.ERROR);
            alert.setTimeout(Alert.FOREVER);
            display.setCurrent(alert, addressForm);
            return;
        }

        try {
            // Send a message to the server
            String request = "GET / HTTP/1.0\n\n";

            os = socket.openOutputStream();
            os.write(request.getBytes());
            os.close();

            // Read the server's reply, up to a maximum
            // of 128 bytes.
            is = socket.openInputStream();
            final int MAX_LENGTH = 128;
            byte[] buf = new byte[MAX_LENGTH];
            int total = 0;
            while (total < MAX_LENGTH) {
                int count = is.read(buf, total, MAX_LENGTH - total);
                if (count < 0) {
                    break;
                }
                total += count;
            }
            is.close();
            String reply = new String(buf, 0, total);
            messageLabel.setText(reply);
            socket.close();
            display.setCurrent(displayForm);
        } catch (IOException ex) {
            Alert alert = new Alert("I/O Error",
                        "An error occurred while communicating with the server.",
                        null, AlertType.ERROR);
            alert.setTimeout(Alert.FOREVER);
            display.setCurrent(alert, addressForm);
            return;
        } finally {
            // Close open streams and the socket
            try {
                if (is != null) {
                    is.close();
                    is = null;
                }
            } catch (IOException ex1) {
            }
            try {
                if (os != null) {
                    os.close();
                    os = null;
                }
            } catch (IOException ex1) {
            }
            try {
                if (socket != null) {
                    socket.close();
                    socket = null;
                }
            } catch (IOException ex1) {
            }
        }
    }

    private void initialize() {
        display = Display.getDisplay(this);

        // Commands
        exitCommand = new Command("Exit", Command.EXIT, 0);
        okCommand = new Command("OK", Command.OK, 0);
        backCommand = new Command("Back", Command.BACK, 0);

        // The address form
        addressForm = new Form("Socket Client");
        serverName = new TextField("Server name:", "", 256, TextField.ANY);
        serverPort = new TextField("Server port:", "", 8, TextField.NUMERIC);
        addressForm.append(serverName);
        addressForm.append(serverPort);
        addressForm.addCommand(okCommand);
        addressForm.addCommand(exitCommand);
        addressForm.setCommandListener(this);

        // The connect form
        connectForm = new Form("Connecting");
        messageLabel = new StringItem(null, "Connecting...\nPlease wait.");
        connectForm.append(messageLabel);
        connectForm.addCommand(backCommand);
        connectForm.setCommandListener(this);

        // The display form
        displayForm = new Form("Server Reply");
        messageLabel = new StringItem(null, null);
        displayForm.append(messageLabel);
        displayForm.addCommand(backCommand);
        displayForm.setCommandListener(this);
    }
}
Все =)
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.

Последний раз редактировалось Mitron; 12.12.2008 в 14:29.
Mitron вне форума Ответить с цитированием
Старый 12.12.2008, 14:34   #7
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

спасибо большое))))) буду разбирать)
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 12.12.2008, 15:26   #8
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

Огромное спасибо))))) разобрал)) все работает))))
Сделал так:
Код:
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
import javax.microedition.io.Connection;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.Connector;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;

public class NewUin extends MIDlet implements CommandListener,Runnable
{
  private Display display;
  private Form form1,form2,form3;
  private StreamConnection sock;
  private DataInputStream dis;
  private DataOutputStream dos;
  private Command ComExit,ComConnect;
  
  public NewUin()
  {
  }
  
  public void startApp() throws MIDletStateChangeException
  {
    if(display==null)
    {
      initialize();
      display.setCurrent(form1);
    }
  }
  
  public void pauseApp()
  {
  }
  
  public void destroyApp(boolean b) throws MIDletStateChangeException
  {
    
  }
  
  public void commandAction(Command c, Displayable d)
  {
    if(c==ComExit)
    {
      try
      {
        destroyApp(true);
      }catch(MIDletStateChangeException ex){}
      notifyDestroyed();
    }
    if(c==ComConnect)
    {
      Thread t=new Thread(this);
      t.start();
      display.setCurrent(form2);
    }
  }
  
  public void run()
  {
    try
    {
      sock=(StreamConnection)Connector.open("socket://login.icq.com:5190",Connector.READ_WRITE);
      dos=sock.openDataOutputStream();
      dis=sock.openDataInputStream();
      byte[] buffer=new byte[10];
      dis.read(buffer);
      if(buffer[1]==1)
      {display.setCurrent(form3);}
      else
      {display.setCurrent(form1);}
    }
    catch(IOException ex)
    {
      Alert alert = new Alert("I/O Error","An error occurred while communicating with the server.",null, AlertType.ERROR);
      alert.setTimeout(Alert.FOREVER);
      display.setCurrent(alert, form1);
    }
    finally
    {
      try{
       dos.close();
       dis.close();
       sock.close();
      }catch(IOException ex){
      }
    }
    
  }
  
  public void initialize()
  {
    display=Display.getDisplay(this);
    
    ComExit=new Command("Exit",Command.EXIT,1);
    ComConnect=new Command("Connect",Command.OK,1);
    form1=new Form("New UIN:");
    form1.addCommand(ComExit);
    form1.addCommand(ComConnect);
    form1.setCommandListener(this);
    
    form2=new Form("Connecting...");
    
    form3=new Form("Connected)))");
    form3.addCommand(ComExit);
    form3.setCommandListener(this);
  }
  
}
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 22.12.2008, 15:15   #9
web64x
Новичок
Джуниор
 
Регистрация: 22.12.2008
Сообщений: 1
По умолчанию Начинающий web программер

Как правильно использовать код при заказе сайта, изготовление сайтов москва, создание сайтов под ключ. Я только начинаю познавать азы web программирования и выслушаю любые советы. Просьба отнестись с пониманием к моему сообщению и не судить строго.
web64x вне форума Ответить с цитированием
Старый 22.12.2008, 16:27   #10
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

web64x, тебя за такие сообщения забанить надо!
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сетевое приложение на J2ME TitanicMan Общие вопросы по Java, Java SE, Kotlin 1 08.01.2010 03:33
Вопрос по J2ME Дзержинский Общие вопросы по Java, Java SE, Kotlin 13 11.12.2009 17:41
Предлагаю услуги J2SE, J2ME разработчика!!! Monag Фриланс 1 16.11.2007 09:08