写了一个聊天室服务器
打开两个终端并连接上服务器之后 可以实现相互传递消息
写了一个安卓聊天室客户端 成功连接上服务器之后发送消息 并没有传送到终端 应该是没有传送到服务器成功
但是可以接收来自终端的消息 效果如图
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出的问题吗