JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

聊天:
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
希望在界面最上面显示我的QQ号码:显示自己的编号;
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
在窗口栏显示自己的编号:
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
--------------------

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
String  ownerId

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

---------------------------------
真实的QQ,
客户端1/2可能直接走局域网;

借助于服务器进行中转:
客户端1如果登录成功,Hello,准备和2聊天,
信息发到服务器:

(1)如果2不在线,服务器策略:把数据暂存在数据库-message表;
等2上线,服务器把信息按顺序回送给客户端2;
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

(2)如果2在线,服务器和客户端2存在着一个连接,S,通道;
服务器策略:服务器为了可以完成信息转发,把服务器得到的每一个
socket[]保存在Hashmap里面;

对于每一个socket,服务器认为是一个线程,
当服务器和某个客户端形成一个连接时(Socket),
服务器端就单开一个线程;
让该线程与客户端通讯;

----------------------------------------------------
对服务器端进行改造:
单开一个线程,让该线程与客户端保持通讯:
-SerConClientThread
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
public SerConClientThread(Socket  s)
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
把服务器和客户端的连接赋给s

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
读的是Message,通过 Message对象进行交互的;

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
服务器得到的信息Message;

-----------------------
-Message属性的添加:
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
发送者,接收者,信息内容,时间等等;
-----------------------------------
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
-----------------------------------------------------------
-----------------------------------------------------------
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
new java.util.Date( ).toString( )

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
s要在QqChat里面运用;

//发送给服务器
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

---------------
---------------
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
-线程控制的,这条通道已经打通了;

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
-2号在线,1号发给2号的信息,通过服务器转给2号 ;
-服务器只要拿到socket,就好了;

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
服务器和getter达成的socket;

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
-我们可以把服务器得到的每个socket[客户端],
保存在Hashmap,用客户的id号标识该socket;

-ManageClientThread
Hashmap<String,SerConClientThread> ();
String    用户ID;
SerConClientThread   用户线程;
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
在线---HashMap里面有ID号;

public static xxxxxx
只能有一份HashMap;

-把线程加入HashMap里面
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

-转发是在线程当中发生的
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
//
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
//
接收到某个人给某个人发的message对象,
找到接收人的那个通讯线程,
再将其发回去;
//
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
----------
QqChat必须一直要处于读的状态,做成线程;
才能进行聊天
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
ObjectInputStream  ois=new Object

JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天
转发任务已经完全实现了;

-----------------------------------
好友在线,显示彩色头像;
反之,显示灰色头像;
JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天