新建一个Android工程,直接在MainActivity中实现我们的代码即可。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ip=(EditText)findViewById(R.id.ip);//输入服务器的IP
et=(EditText)findViewById(R.id.et);//输入我们所要说的话
connection=(Button)findViewById(R.id.b1);
send=(Button)findViewById(R.id.b2);
text=(TextView)findViewById(R.id.text);
connection.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
connect();//连接服务端
}
});
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
send();//发送消息
}
});
}
我们在onCreate()在初始化我们的控件,并且调用我们的方法
在connect()方法中,我们实现连接服务端
/**
*使用AsyncTask异步访问我们的服务端,不然会堵塞主线程
*/
public void connect() {
AsyncTask<Void, String, Void> read = new AsyncTask<Void, String, Void>() {
@Override
protected Void doInBackground(Void... arg0) {
try {
socket = new Socket(ip.getText().toString(), 12345);//连接服务端
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//获取输出流
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获取输入流
if(is){
writer.write(1+"\n");
writer.flush();
is=false;
}
publishProgress("@success");
} catch (UnknownHostException e1) {
Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
} catch (IOException e1) {
Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
}
try {
String line;
while ((line = reader.readLine())!= null) {
publishProgress(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
if (values[0].equals("@success")) {
Toast.makeText(MainActivity.this, "链接成功!", Toast.LENGTH_SHORT).show();
}
text.append("别人说:"+values[0]+"\n");//经过测试,如果不加“\n”将不会显示消息
super.onProgressUpdate(values);
}
};
read.execute();
}
/**
*通过输出流将消息发送出去
*/
public void send(){
try {
text.append(“我说:”+et.getText().toString()+”\n”);
writer.write(et.getText().toString()+”\n”);
writer.flush();
et.setText(“”);
} catch (IOException e) {
e.printStackTrace();
}
}
至此,一个简单的Android聊天室就完成了,写的不好,请多多见谅。。。