如何将变量值传递给套接字字符串

时间:2019-04-27 13:04:24

标签: java android

我真的是Android开发的新手,所以这可能是一个愚蠢的问题。我正在使用包含特定用户IP地址和端口的firestone数据库。我能够将该值转换为变量,但是却难以将其传递给套接字连接。

我尝试放置一个公共类而不是受保护的类,并在该论坛上遵循一些指导,但是我认为尚不清楚如何解决它。


public class DataSender extends AsyncTask<String,Void,Void> {

    Socket s;
    DataOutputStream dataOutputStream;
    PrintWriter printWriter;

    @Override
    protected Void doInBackground(String... voids) {

        String currentuser = FirebaseAuth.getInstance().getCurrentUser().getEmail();
        FirebaseFirestore db = FirebaseFirestore.getInstance();
        DocumentReference docRef = db.collection("User").document(currentuser);
        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document != null) {
                        String UIPaddress = document.getString("ipAddress");
                        String uport = document.getString("port");

                    } else {
                        Log.d("LOGGER", "No such document");
                    }
                } 
            }
        });


        String  messg=voids[0];
        try {

            s=new Socket(UIPaddress ,uport );
            printWriter=new PrintWriter(s.getOutputStream());
            printWriter.write(messg);
            printWriter.flush();
            printWriter.close();
            s.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}


以上代码抛出错误无法解析符号'UIPaddress'。 无法解析符号“ uport”。

1 个答案:

答案 0 :(得分:0)

最后,我可以使用Global变量解决问题。希望这会对其他新手有所帮助。

Socket s;
DataOutputStream dataOutputStream;
PrintWriter printWriter;
public static String uIpaddress ;
public static int uport;