/LANChatClient

A simple IM app for LAN use.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

LANChatClient

一个局域网即时通信 (IM) 软件客户端。需要服务端的支持才能使用。

当然如果把服务端放在公网服务器上的话是可以广域网使用的。

使用方法

先输入服务器的 IP 地址,默认端口号是 8889,可以根据自己需要在代码中修改。

  • /login [Name] [Password] 首先需要使用该指令进行登录,否则不能发消息,也不能接收消息。目前仅支持默认密码 123456 登录(因为服务端还没有做身份验证,使用其他密码会登录失败) 现在有登录框了,所以该指令已经没有必要输入了。(但服务端的身份验证系统还是没有完成,请使用默认密码 123456 登录)
  • /setName [NewName] 修改自己的昵称
  • /sendto [Name] 发送私聊消息给特定昵称的人。如果有相同昵称,则有相同昵称的人都会收到消息。

目前仅支持以上三种指令。还有正在开(gu)发(gu)中(gu)的功能:

  • /setPassword [OldPw] [NewPw] 重设密码

以后会考虑加入文件传输和图片发送功能(可能还会有富文本发送功能)。

服务端到客户端的协议

  • /text [IP] [Message] 显示由某 IP 发送的消息。
  • /sendby [IP] [Message] 显示由某 IP 发送的私聊消息。
  • /login [true/false] 返回登录状态信息。登录成功返回 true(字符串),登录失败则返回 false
  • /newUser [IP] [Name] 新建一个用户,同时在客户端创建字典映射,并显示类似于“XXX 已加入聊天”的消息。
  • /delUser [IP] 删除一个用户,同时删除在客户端的字典映射,并显示类似于“XXX 退出了聊天”的消息。
  • /changeName [IP] [Name] 修改用户昵称,同时在客户端修改字典映射,并显示“XXX 已将名字修改为 OOO”这样的消息。
  • /server [Message] 显示由服务端发送的广播信息。

原理

基于 socket 协议进行文本传输。
除密码外,其他文本都是明文传输的(毕竟密码有现成的 MD5 库,服务端保存 MD5 加密后的文本,而聊天内容需要自己写加密协议,比较麻烦)。

多线程方式进行发送和接收。

使用 PyQt5 图形界面库,基于 Qt Designer 软件绘制图形界面(所以想要直接运行源代码需要先安装 PyQt5 库,指令为 pip install PyQt5)。