有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无法连接到服务器(从安卓 emulator到java服务器)

我已经用java编写了一个服务器,用安卓编写了一个客户端,但是我无法用安卓代码找到服务器

注1:我在java中使用了完全相同的代码,可以轻松地连接到服务器

注2:我在Stackoverflow中的一些线程中使用了“10.0.2.2”和“我的计算机ip”,但它们都不起作用

注3:我使用的是安卓 studio

如果有人能帮我,我将不胜感激

我在onCreate里放了他的名字:

cl1 = new Client("192.168.189.1");

cl1.startRunning();

这是我的客户端类:

package com.example.tavoes;

import java.io.*;
import java.net.*;
import java.util.Scanner;

import 安卓.util.Log;

public class Client {


private ObjectOutputStream output;
private String message = "";
private String serverIp;
private Socket connection;
private Scanner scanner;

// constructor
public Client(String host) {
super();
serverIp = host;
}

// connect to server
public void startRunning() {

try {
   connectToServer();            
    setupStream();
   whileChatting();
} catch (EOFException eofException) {
    eofException.printStackTrace();
} catch (IOException ioException) {
    ioException.printStackTrace();
} /*finally {
    closeChat();
}*/
}

// connect to server
private void connectToServer() {

try {
    connection = new Socket(InetAddress.getByName(serverIp), 4444);
} catch (IOException e) {
    e.printStackTrace();
    }
}

// setup streams to send and receive messages
private void setupStream() throws IOException {
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
//input = new ObjectInputStream(connection.getInputStream());
//System.out.println("Inside Streams are setup!");
}

// While chatting with server
private void whileChatting() throws IOException {
//do {
//output.flush();

output.writeObject("<Request connection  \"1\" />");

scanner=new Scanner(connection.getInputStream());
message = scanner.nextLine();
//System.out.println(message);
//message = (String) input.readObject();
}

// close the streams and sockets
private void closeChat() {
try {
    output.close();
    //input.close();
    connection.close();
    //System.out.println("Closing connection");
} catch (IOException ioException) {
    ioException.printStackTrace();
}
}
}

共 (1) 个答案

  1. # 1 楼答案

    仅将其标记为已解决,以备将来参考: 为了使用您需要的网络创建任何连接

    1. 通过包含许可,允许应用程序使用网络 到舱单

    2. 在一个单独的线程上完成所有的网络活动 而不是主线程,或者使用AsyncTask