多人聊天室小项目笔记(APP客户端)
这两天自己写了一个多人聊天室,服务器是用Java写的,烂的一批,不想写了,但是安卓客户端上遇到了很多问题还是有必要说一下。
1、功能
这个APP客户端是基于我自己写的服务器来运行的,不过有需要的伙伴可以根据自己的需要进行一些更改,可以把它做成一个手机套接字工具。
主要功能:通过套接字进行远程通信(异步收发)。
附加功能:每次登陆可以为自己添加个性昵称,通过对服务器发来的消息进行不同的操作。
2、实现
有了功能,我们就来实现它。
主要通信功能(写)
因为是客户端,所以我们这里只需要使用一个套接字连接服务器就可以了,下面是代码
package com.example.a9042.socket;
import android.view.View;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import com.example.a9042.chatclint.MainWindow;
/*这个类用来进行套接字操作,继承父类Thread*/
public class MyScoket extends Thread{
private Socket mySocket;//主要套接字
private String ip="118.24.107.35";//目标服务器IP
private int port=11111;//目标服务器端口
private MainWindow mw;//主窗口实例,用来实现主类的一些方法
private DataOutputStream pw;//输出流,用来发送消息
private Receive rec;//接收类的实例化对象,主要用来启动接收服务器消息线程
/*构造方法,传递主窗口实例*/
public MyScoket(MainWindow w){
this.mw=w;
}
/*子线程run方法*/
public void run(){
if(mySocket==null){
//mw.showToast("正在连接服务器");
while(true){
try {
mySocket=new Socket(ip,port);//通过Socket构造器将服务器IP和端口绑定到套接字
/*如果套接字连接上了*/
if(mySocket.isConnected()){
mw.showToast("登陆成功");//通过弹出消息提示登陆服务器成功
rec=new Receive(this.mySocket,mw);//通过receive类构造器将套接字和主窗口传递给rec对象
rec.start();