YANG-********- 2019-09-05 13:58 采纳率: 0%
浏览 419

安卓聊天室客户端发送消息 为什么在服务器没有接收到?

写了一个聊天室服务器
打开两个终端并连接上服务器之后 可以实现相互传递消息

写了一个安卓聊天室客户端 成功连接上服务器之后发送消息 并没有传送到终端 应该是没有传送到服务器成功
但是可以接收来自终端的消息 效果如图
图片说明

MainActivity代码如下
package com.example.mysocketclient;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class MainActivity extends AppCompatActivity {

EditText editTextIp;
EditText editTextContent;
TextView textViewContent;
Button btnConnect;
Button btnSend;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editTextIp = (EditText) findViewById(R.id.editTextIp);
    editTextContent = (EditText) findViewById(R.id.editTextContent);
    textViewContent = (TextView) findViewById(R.id.textViewContent);
    btnConnect =(Button) findViewById(R.id.btnConnect);
    btnSend = (Button) findViewById(R.id.btnSend);

    btnConnect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            connect();
        }
    });

    btnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           send();
        }
    });

}

//-----------------------------------

Socket socket = null;
BufferedWriter writer = null;
BufferedReader reader = null;

public void connect() {
        AsyncTask<Void, String, Void> read = new AsyncTask<Void, String, Void>() {

            @SuppressLint("WrongThread")
            @Override
            protected Void doInBackground(Void... voids) {
                try {
                    socket = new Socket(editTextIp.getText().toString(),12345);
                    writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                    reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    publishProgress("@success");
                    String line;
                    while ( (line = reader.readLine()) != null ) {
                        publishProgress(line);
                    }
                } catch (UnknownHostException e) {
                    //Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                } catch (IOException e) {
                    //Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }

// try {
// String line;
// while ( (line = reader.readLine()) != null ) {
// publishProgress(line);
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
return null;
}

            @Override
            protected void onProgressUpdate (String...values){
                if (values[0].equals("@success")) {
                    Toast.makeText(MainActivity.this, "成功建立链接", Toast.LENGTH_SHORT).show();
                }
                textViewContent.append("别人说: "+values[0]+"\n");
                super.onProgressUpdate(values);
            }
        };
        read.execute();
}


public void send (){
    try {
        textViewContent.append("我说: "+editTextContent.getText().toString()+"\n");
        writer.write(editTextContent.getText().toString()+"\n");
        //writer.flush();
        editTextContent.setText("");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

求大神指导 这个该怎么解决 是在BufferedWrite出的问题吗

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-09-07 23:31
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 请问下这个红框里面是什么文档或者记事本编辑器
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 为什么安装HCL 和virtualbox之后没有找到VirtualBoxHost-OnlyNetWork?
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)