黑莓套接字连接 - 应用程序挂起在acceptAndOpen()

时间:2012-03-28 21:44:59

标签: sockets blackberry connection inputstream

有代码,黑莓不是我写的代码:

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和socket的新手。 我假设,该模拟器需要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 个答案:

答案 0 :(得分:1)

您正尝试在模拟器上通过Wi-Fi打开直接TCP连接。

您无法从模拟器连接到localhost,因为它使用MDS模拟器作为每个连接的代理,这反过来又阻止您访问localhost。 (我假设“localhost”你的意思是在你的开发工作站上运行一个服务器套接字)

因此,我建议您在模拟器上测试时从URL中删除wi-fi后缀,并使用工作站LAN上的真实IP地址连接到工作站服务器。只有在模拟器中配置WLAN后才可以在模拟器中使用“; interface = wifi”后缀,但由于您无法在内部放置任何真实设备,因此该模拟网络非常无用。