我目前正在尝试在我的Android手机上托管一个服务器套接字,并使用我的电脑连接到那个。有几个应用程序已经这样做(例如Skype),所以它必须是可能的。 我目前面临的问题是,我无法连接到我的模拟器上打开的服务器套接字。 这是我在Android Developer Tools模拟器中运行的代码,用于打开我的服务器套接字:
public void run(){
Log.i(TAG, "1");
try{
serverSocket = new ServerSocket(25555);
Log.i(TAG, "2. Details: " + serverSocket);
while(true)
{
clientSocket = serverSocket.accept(); //it keeps sticking here, and waiting for connections.
Log.i(TAG, "3");
in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
out = new PrintWriter(clientSocket.getOutputStream(), true);
String input = in.readLine();
out.println("received: " + input);
in.close();
out.close();
}
} catch(Exception e) {
Log.i(TAG, "ERROR:");
e.printStackTrace();
}
}
这是我在普通eclipse中运行的代码,用于连接到此服务器套接字:
try {
socket = new Socket(-snip-,25555);
System.out.println("Connection has been made");
} catch (NumberFormatException e) {
System.out.println("Connection wasn't made. Closing the application.");
}
这只是给了我这个错误:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
现在我的问题是,我的代码中出错了,还是模拟器出了问题?
顺便说一句,我将这些代码行添加到AndroidManifest.xml中:
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
提前致谢。
答案 0 :(得分:0)
根据讨论,您必须将客户端连接到Android虚拟设备服务器。这意味着您需要了解Android虚拟设备的IP。有一些方法可以实现这一目标:
首先是创建一个网络然后连接您的Android设备和您的计算机/客户端,然后他们将拥有一个IP。
您可以为Android设备分配静态IP,在这种情况下,您应该检查此link。