我有问题将我的Android客户端连接到我的PC服务器 这里有代码
- > PC SERVER:
public class Server {
public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException
{
ServerSocket server = new ServerSocket(4444);
System.out.println("Waiting for clients to connect...");
while (true)
{
Socket s = server.accept();
InetAddress clientAddress = s.getInetAddress();
System.out.println("Incoming connection from: " + clientAddress.getHostName() + "[" + clientAddress.getHostAddress() + "]");
s.close();
}
}
}
---> ANDROID客户:
public class Main extends Activity {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button)findViewById(R.id.connect);
b.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
try {
Socket client = new Socket("10.0.2.2", 4444); //connect to server
client.close(); //closing the connection
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
在我的Android设备上,我点击我的服务器程序(PC)中的按钮没有查看设备连接...为什么?我试图插入
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
进入我的AndroidManifest但是当我点击按钮程序崩溃时 Android设备和PC连接到同一网络(路由器DSL)。
请帮帮我
答案 0 :(得分:0)
您使用的地址为10.0.2.2
,non routable为私有。
您应该使用设备可以解析的地址。在DNS中发布的DNS名称可以从您的手机访问(因此是公共的)或可路由的IP。您的服务器应该可以从公共网络访问,除非您特别注意,否则您的PC不太可能出现这种情况 - 我不确定您的意思是什么:
Android设备和PC连接到同一网络(路由器DSL)
请查看手机端抛出的异常并使用生成的堆栈跟踪编辑您的帖子。这将有助于深入研究这一点。
答案 1 :(得分:0)
10.0.2.2是在模拟器中运行的应用程序用于连接PC上运行的服务器的地址。模拟器在同一台PC上。如果您使用真正的设备,则必须使用与设备位于同一WLAN中的PC的(W)LAN地址。经常像192.168.0.12。找出ipconfig。
答案 2 :(得分:0)
您的套接字声明应如下所示:
Socket client = new Socket(10.0.2.2, 4444); //Quotes removed