Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets Blackberry套接字连接-应用程序挂起在AcceptEndOpen()上_Sockets_Blackberry_Connection_Inputstream - Fatal编程技术网

Sockets Blackberry套接字连接-应用程序挂起在AcceptEndOpen()上

Sockets Blackberry套接字连接-应用程序挂起在AcceptEndOpen()上,sockets,blackberry,connection,inputstream,Sockets,Blackberry,Connection,Inputstream,有一段代码不是我为黑莓写的: public class ServerThread extends Thread { ... String url = "socket://:12345;deviceside=true;interface=wifi"; ServerSocketConnection connect = (ServerSocketConnection) Connector.open(url); SocketConnection

有一段代码不是我为黑莓写的:

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()
调用

我是黑莓和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());        
    }
...

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

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


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

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

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


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

Localhost是该设备,您需要输入有效的IP地址。您还需要在另一个线程中使用此代码为我提供了运行模拟器的PC的真实有效IP。我已经检查过了。Michael,对不起,我不太明白。你的意思是,我应该以某种方式隐式指定IP吗?thanksgetLocalAddress将提供设备的IP,你需要连接到的IP,服务器。线程将被锁定,它正在等待来自客户端的连接。Localhost是设备,您需要输入有效的IP地址。您还需要在另一个线程中使用此代码为我提供了运行模拟器的PC的真实有效IP。我已经检查过了。Michael,对不起,我不太明白。你的意思是,我应该以某种方式隐式指定IP吗?thanksgetLocalAddress将提供设备的IP,你需要连接到的IP,服务器。线程将被锁定,它正在等待客户端的连接。使用
wifi
edge
参数可以。我已经检查过了。问题是其他的。我已经发现了。由于对套接字的理解不好,我犯了一个错误,当没有初始化客户端时。对于我的情况,可能只是从浏览器URL调用
localhost:12345
。然后acceptAndOpen()工作正常。使用
wifi
edge
参数也可以。我已经检查过了。问题是其他的。我已经发现了。由于对套接字的理解不好,我犯了一个错误,当没有初始化客户端时。对于我的情况,它可能只是从浏览器URL调用
localhost:12345
。然后acceptAndOpen()工作正常。