Skip to content
/ UChat Public

计算机网络课程设计:基于P2P的局域网即时通信系统

License

Notifications You must be signed in to change notification settings

Eterance/UChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于P2P的局域网即时通信系统

(如果有大佬觉得代码写的像(和谐)一样,请轻喷ヾ(•ω•`)o)

已知技术参数和设计要求

1.掌握P2P原理。
2.实现一个图形用户界面局域网内的消息系统。
3.功能:建立一个局域网内的简单的P2P消息系统,程序既是服务器又是客户,服务器端口(自拟服务器端口号并选定)。
3.1用户注册及对等方列表的获取:对等方A启动后,用户设置自己的信息(用户名,所在组);扫描网段中在线的对等方(服务器端口打开),向所有在线对等方的服务端 口发送消息,接收方接收到消息后,把对等方A加入到自己的用户列表中,并发应答消息;对等方A把回应消息的其它对等方加入用户列表。双方交换的消息格式自己根据 需要定义,至少包括用户名、IP地址。
3.2发送消息和文件:用户在列表中选择用户,与用户建立TCP连接,发送文件或消息。
4.用户界面:界面上包括对等方列表;消息显示列表;消息输入框;文件传输进程显示及操作按钮或菜单。

已经实现的功能

核心功能

用户的注册与登录(一台电脑最多一个账户);
UDP上下线广播,对等方的账户信息交换;
TCP聊天消息交换,支持本地历史记录保存(rtf)和未读消息提示(xml);
TCP文件传输(每次只能和一个人传文件),支持详细的进度显示和中断传输(可能有bug);

额外功能

弹出式通知气泡;
设置页面:用户名更改,清空本机数据,免密登录等;

放弃的功能

好友系统(局域网就几台电脑,搞好友系统好像没有必要);
多人文件传输(懒得搞);
优化 UID 的生成方式(懒得搞×2);

已知 BUG

(严重)向虚拟机用户发送文件(>40MB),且传输速度高于5MB/s时,极高概率会发生文件损坏。原因尚不清楚;
若接收方中断文件传输,发送方极小概率会抛出 “往已释放的 SOCKET 写入数据” 错误,但是可以忽略(catch 改一下,让它不抛出错误就好了);
当局域网列表里的人全部下线,而用户正处于文件传输页面时,小概率会不跳转回局域网页面,而这会让用户误操作,向不存在的用户发送文件;

About

计算机网络课程设计:基于P2P的局域网即时通信系统

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages