⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 retail.txt

📁 局域网内聊天传输文件
💻 TXT
字号:
//PK 2004/10/14
消息头格式:
应用标记 + 版本号 + 时间 + 命名ID

//PK 2004/10/14
[登录消息]		用户名
[在线消息]		用户名
[登出消息]
[说话]			内容
[悄悄话]		内容
[更名消息]		用户名
[命名冲突消息]
[发文件消息]	标记 + 任务ID + 文件名
[收文件消息]	任务ID + TCP侦听端口
[任务取消消息]	任务ID
[拒收文件消息]	任务ID

//PK 2004/10/14
(A) 关于登录的处理
(发)
1 登录后广播一个[登录消息]。
(收)
1 收到一个[登录消息]后,判断用户是否已经在线。
1.1 如果已经在线,判断是否改名,是则改之(参见D),并更新用户最后在线时间。
1.2 如果不在线,判断该用户是否在用户列表中。
1.2.1 在,则改变用户状态为在线,并判断是否改名,是则改之(参见D),并更新用户最后在线时间。然后回复一个[在线消息]。
1.2.2 不在,则将该用户添加到用户列表。并保存用户列表到磁盘。

//PK 2004/10/14
(B) 关于是否在线的处理
(发)
1 每隔固定的时间发送一个[在线消息]给好友列表中的所有用户,包括不在线的。
(收)
1 收到一个[在线消息]后,判断是否来自名字冲突的地址,是则放弃什么也不做。
2 判断该用户是否在线。
2.1 否,则将该用户的状态改为在线,并更新用户最后在线时间。
2.2 是,则更新用户最后在线时间。并判断是否要改名,要则改之(参见D)。
(其它)
1 每隔固定时间判断用户最后在线时间是否已经超过限期
1.1 是则改变用户状态为离线
1.2 否则不做

//PK 2004/10/14
(C) 登出的处理
(发)
1 广播一个[登出消息]。
2 取出好友列表,对每一个好友发送一个[登出消息],包括不在线的。
(收)
1 收到一个[登出消息]后,判断用户是否在线。
1.1 在线,则将用户状态设为离线,并打印一条系统通知,更新用户最后在线时间。
1.2 离线,什么也不做。

//PK 2004/10/14
(D) 改名及名字冲突
(发)
1 改名时先检查是否于现有在线用户重名
1.1 重名不允许更改,要求再重命名。
1.2 不重名,发送一个[更名消息]给好友列表中的每一个人,包括不在线的。
1.2.1 将命名冲突地址变量清0。
(收)
1 收到[更名消息]后,或是[登录消息]和[在线消息]需要改名时,判断名字是否和自己重名。
1.1 否,更改用户名,并打印一条系统通知,更新用户最后在线时间。
1.1.1 命名冲突地址不为0,并等于用户的地址,则将命名冲突地址清0。
1.2 是,回复一条[命名冲突消息]。并记下该用户的地址为命名冲突地址。
2 收到[命名冲突消息],记下该用户的地址为命名冲突地址,并弹出要求改名框。

//PK 2004/10/14 - 10/20
(E) 文件传送
(发-源方)
1 对选中的好友发送一个[发文件消息],如果没有选中则为所有用户。(消息中带一个随机数做为文件发送任务ID)。
2 在系统中生成一个发送文件任务,以ID为关联。
(收发-目方)
1 确认要接收,询问目标路径。并生成一个接收文件任务。
1.1 回复一个[收文件消息],带上相应的任务ID号。
1.2 起一个接收线程,并建立TCP连接到源方。
1.3 连接成功后,在TCP连接上发送相应的任务ID。
1.4 开始接收文件。
1.5 接收完成后,关闭TCP连接。打印一条系统通知。
1.6 删除接收文件任务,关闭接收线程
2 不接收。
2.1 回复一个[拒收文件消息],带上相应的任务ID号。
(收-目方)
1 收到[拒收文件消息]。
1.1 如果有相应的任务,打印一条系统通知,从相应的任务中删除该用户。如果任务中已经没有待接收用户则删除该任务。
1.2 如果没有相应的任务,什么也不做。
2 收到[收文件消息]。
2.1 如果有相应的任务,打印一条系统通知。
3 文件发送线程侦听到TCP连接
3.1 建立一个收文件线程及TCP连接
3.2 在新建的TCP连接上收task_id。
3.3 如果有相应的task,发送文件。
3.3.1 发送完成后,更新相应的任务。关闭线程及TCP连接。
3.4 如果没有相应的task,关闭发送线程及TCP连接。发送一条[任务取消消息]
(其他)
1 系统在启动时,即开始一个文件发送的TCP联系倾听线程。
2 定时检测系统中的任务,如果任务过时则删除。
(注)
1 [发文件消息]中需要带上一个指示位,指示是系统发送,还是用户发送。如果是系统发送则直接接收文件,不询问用户也不打印任何系统消息。目前主要用于用户头像的传输及用户贴图。
[][][][][][][][][][][][]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -