有代码,黑莓不是我写的代码:
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());
}
...
答案 0 :(得分:1)
您正尝试在模拟器上通过Wi-Fi打开直接TCP连接。
您无法从模拟器连接到localhost,因为它使用MDS模拟器作为每个连接的代理,这反过来又阻止您访问localhost。 (我假设“localhost”你的意思是在你的开发工作站上运行一个服务器套接字)
因此,我建议您在模拟器上测试时从URL中删除wi-fi后缀,并使用工作站LAN上的真实IP地址连接到工作站服务器。只有在模拟器中配置WLAN后才可以在模拟器中使用“; interface = wifi”后缀,但由于您无法在内部放置任何真实设备,因此该模拟网络非常无用。