(2)收到UDP信息:
当收到UDP信息时udpRSocket.receive(dp)
-->如果是好友聊天信息("MSG")-->分析发送方的号码-->从MainFrame.Friend中查找是否是好友,不是则加为陌生人-->取得Friend表中的此人的IcqID,调用IcqID.addInMsg()-->在addInMsg()中-->首先判别是否是第二次收到重复信息(实际应用中可能收到两次同一条消息),如果重复则不做任何处理.-->是新消息-->设IcqID.newMsg=true,给MainFrame.repaintEvt=true,即让主窗口重绘.-->向发送者回复一条"UDPOK"的消息-->如果用户允许自动回复(MainFrame.sysinfo.autoRe==true),刚发送自动回复内容(MainFrame.sysinfo.autoReText)--完成.
-->如果是确认信息("UDPOK")-->取出MainFrame.friend表中发送方的IcqID-->调用IcqID.backID()-->去掉Vector IcqID.outMsg中的已发出内容这条数据(否则IcqID.run()中在检测到某条信息在超时后仍未收到确认信息,则会自动通过服务器转发)
(3)发送一条聊天信息:
MainFrame.processMouseEvent()或MainFrame.processKeyEvent()接收到一条发信息的指令后,构造一个SMsg()窗口,等待用户输入聊天内容-->接到发送指令-->调用好友的IcqID.sendOut()方法-->在IcqID.sendOut()中-->构造一条发送命令,并截去太长的字符串,为这个信息加上一条ID(以便接收方面军区别是否重复收到同一信息)-->调用addOutMsg(),向Vector IcqID.outMsg添加发出的消息,以便run()方法检查确定是否重发-->启动自已的run()方法-->结束
4.图形用户界面:
文章来源于领测软件测试网 https://www.ltesting.net/