Подключение к сокету Blackberry - приложение зависает на acceptAndOpen () - PullRequest
1 голос
/ 29 марта 2012

Есть код, написанный не мной для Blackberry:

public class ServerThread extends Thread {
    ...
        String url = "socket://:12345;deviceside=true;interface=wifi";
        ServerSocketConnection connect = (ServerSocketConnection) Connector.open(url);

        SocketConnection sc = (SocketConnection) connect.acceptAndOpen();
        InputStream input = sc.openInputStream();
    ...

Я запустил симулятор Blackberry и отладил этот код, обнаружил, что переменная connect в порядке, но приложение зависает при connect.acceptAndOpen() вызове.

Я новичок в Blackberry и сокете. Как я предполагаю, этот симулятор ожидает ввода от localhost, но не получает его.

Если это так, как я могу предоставить такой ввод?
Должен ли я дополнительно запустить какой-то процесс на localhost?

РЕДАКТИРОВАНИЕ:

public class MyApp extends UiApplication
{
...
    public MyApp()
    {        
        new ServerThread().start();        
        // Push a screen onto the UI stack for rendering.
        pushScreen(new MyScreen());        
    }
...

1 Ответ

1 голос
/ 29 марта 2012

Вы пытаетесь открыть прямое TCP-соединение через Wi-Fi на симуляторе.

Вы не можете подключиться к локальному хосту из симулятора, поскольку он использует симулятор MDS в качестве прокси для каждого соединения, что, в свою очередь, препятствует доступу к локальному хосту. (Я предполагаю, что для "localhost" вы имели в виду сокет сервера, работающий на вашей рабочей станции)

Поэтому я бы порекомендовал вам удалить суффикс wi-fi из URL при тестировании на симуляторе и подключиться к серверу рабочей станции, используя его истинный IP-адрес в локальной сети рабочей станции. Вы можете использовать суффикс «; interface = wifi» в симуляторе только после настройки WLAN в симуляторе, но эта симулированная сеть довольно бесполезна, поскольку вы не можете поместить в нее никакое реальное устройство.

...