PC-Android,wifi通讯

时间:2016-03-09 07:55:37

标签: java android

我正在尝试在java-pc服务器和Android应用程序之间实现一个简单的聊天应用程序。

我在网上发现了一些教程,以得出几乎令人满意的结果。

我的问题如下:由于某种原因,我可以收到消息到我的服务器,但当我从我的服务器(电脑)发送它时,我的Android手机无法读取字符串。

以下是java-pc程序发送消息的部分: 首先是发送按钮方法:

public void sendMessageBtn(){
    String message  = userText.getText();
    userText.setText("");
    chatWindow.appendText("Server : "+ message + "\n");
    // send the message to the client
    mServer.sendMessage(message);
}

这是我的ServerClass中的sendMessage(message)方法:

    public void sendMessage(String message){
    System.out.println("Message blocked here");
    if(mOut != null){
        System.out.println("Message : " + message + " sent");
        mOut.println();
        mOut.flush();
        System.out.println("Message fully sent");
    }
}

当我收到所有println();

时,一切似乎都在这方面起作用

在电话方面,这是从我的asynk类覆盖监听器的方法:

        public class connectTask extends AsyncTask<String, String, TCPClient>{

        @Override
        protected TCPClient doInBackground(String... message) {
            // We crape a tpc client object and ...
            mTcpClient = new TCPClient(new OnMessageReceived() {
                // ... we implement the messageReceived previously defined as an interface
                @Override
                public void messageReceived(String message) {
                    // this method calls the onProgressUpdate
                    Log.e("messagedReceive method :", message);
                    publishProgress(message);

//                    Toast.makeText(getApplicationContext(),serverMessage,Toast.LENGTH_LONG).show();

                }
            });
            mTcpClient.run();
            return null;
        }

        @Override
        protected void onProgressUpdate(String... values) {

            super.onProgressUpdate(values);


//            Log.e("On progressedUpdate", "super passed");

            // in the arrayList we add the message from the server
//            arrayList.add("Message received");
            Log.e("MainActivity: ", "onProgressedUpdate call");
            arrayList.add("Server: "+values[0]);
            // notify the adapter that the data set has changed. This means that new message received
            // from server was added to the list
            mAdapter.notifyDataSetChanged();


        }
    }

根据我的理解,当收到消息时,感觉值[0]为空,或者至少有一条消息是因为我的所有Log.e都被激活,表明onReceive方法已被激活。

在此先感谢您的帮助,我已经在这方面工作了一段时间并开始变得绝望;)。

亲切的问候, 甲

1 个答案:

答案 0 :(得分:1)

服务器端代码存在问题。

检查您的sendMessage方法。

您没有向OutputStream mOut发送消息。所以在if块中进行。

if(mOut != null) {
    System.out.println("Message : " + message + " sent");
    mOut.pritnln(message);
    mOut.println();
    mOut.flush();
    System.out.println("Message fully sent");
}