Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过单击按钮,使用套接字将文本消息从java服务器发送到android客户端_Java_Android_Sockets - Fatal编程技术网

通过单击按钮,使用套接字将文本消息从java服务器发送到android客户端

通过单击按钮,使用套接字将文本消息从java服务器发送到android客户端,java,android,sockets,Java,Android,Sockets,我需要通过点击按钮从核心java服务器向android客户端发送一条文本消息。但是,它不会显示错误,并且消息不会发送到客户端 服务器端按钮代码: private void msg_sendActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String msgout="";

我需要通过点击按钮从核心java服务器向android客户端发送一条文本消息。但是,它不会显示错误,并且消息不会发送到客户端

服务器端按钮代码:

private void msg_sendActionPerformed(java.awt.event.ActionEvent evt)   {                                         
// TODO add your handling code here:
    String msgout="";
    msgout=msg_text.getText().toString();
    try{
        dout.writeUTF(msgout);
        //printWriter.write(msgout + "\n");
        System.out.printf(msgout);
        //printWriter.flush();
    }catch(Exception e){

    }
} 
Thread r = new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            s = new Socket("192.168.1.5", 1201);
            // din=new DataInputStream(s.getInputStream());
            inputStreamReader = new InputStreamReader(s.getInputStream());
            bufferedReader = new BufferedReader(inputStreamReader);

            dataout = new DataOutputStream(s.getOutputStream());
            String message = "";
            while (!message.equals("exit")) {
                //msgin=din.readUTF();
                message = bufferedReader.readLine();

                msg_area.setText(msg_area.getText().toString() + "\n       Server:\t" + message);
            }
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Exception-->" + e.getMessage(), Toast.LENGTH_SHORT).show();

        }
    }
});
r.start();
客户端代码:

private void msg_sendActionPerformed(java.awt.event.ActionEvent evt)   {                                         
// TODO add your handling code here:
    String msgout="";
    msgout=msg_text.getText().toString();
    try{
        dout.writeUTF(msgout);
        //printWriter.write(msgout + "\n");
        System.out.printf(msgout);
        //printWriter.flush();
    }catch(Exception e){

    }
} 
Thread r = new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            s = new Socket("192.168.1.5", 1201);
            // din=new DataInputStream(s.getInputStream());
            inputStreamReader = new InputStreamReader(s.getInputStream());
            bufferedReader = new BufferedReader(inputStreamReader);

            dataout = new DataOutputStream(s.getOutputStream());
            String message = "";
            while (!message.equals("exit")) {
                //msgin=din.readUTF();
                message = bufferedReader.readLine();

                msg_area.setText(msg_area.getText().toString() + "\n       Server:\t" + message);
            }
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Exception-->" + e.getMessage(), Toast.LENGTH_SHORT).show();

        }
    }
});
r.start();

readLine()
读取行。你没有发短信。您使用的是
writeUTF()
,它使用一种特殊格式,记录在Javadoc中。要么发送行,要么使用
readUTF)

那么在服务器中单击一个按钮?什么类型的服务器有按钮?如果客户端试图使用.readLine()读取一行,服务器应该发送一行。但您的服务器没有。相反,它发送一个UTF字符串。
msg\u area.setText()
。无法在线程运行时在textview中设置文本。
Toast.makeText()
。您不能在线程的run()中显示toast。该服务器是netbeans上的java服务器(如果我理解您的问题的话),实际上我两个都试过了。。。我认为阅读线程不能与ui线程一起工作