YANG-********- 2019-09-04 00:51 采纳率: 0%
浏览 396

AS上写了一个聊天室客户端报错java.lang.String java.io.BufferedReader.readLine()

图片说明

求大神看一下 在网上也没有搜到报这个readLine错误的 是一个聊天室的客户端MainAcitivity的代码如下

package com.example.mysocketclient;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
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.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 = findViewById(R.id.editTextIp);
        editTextContent = findViewById(R.id.editTextContent);
        textViewContent = findViewById(R.id.textViewContent);
        btnConnect =findViewById(R.id.btnConnect);
        btnSend = 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");
                    } catch (UnknownHostException e1) {
                        //Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        //Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
                        e1.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();
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 代码的灵魂是bug! 2019-09-04 08:56
    关注

    空指针异常,你的reader是空的,进而readline()就会报错,仔细检查你初始化reader的代码

    评论

报告相同问题?

悬赏问题

  • ¥15 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件