终于完成了这个实验了,写了报告以及 email 给老师了。
一直很懒,不过这个程序写得还挺顺利的,用 JAVA 进行网络编程和多线程编程很方便,只是界面编程比较麻烦点,不过为了省事我的界面做得挺简洁的。
不过代码写得还是挺难看嘀,太紧凑了,个人还是比较喜欢自己编的 C++ 程序的代码结构。
这个大概就是这个学期我唯一一件认真做的和课程相关密切的事情了。
工程文件和程序已上传,但是还在审阅中。。稍后可在http://download.csdn.net/user/Rappy/下载。
报告如下:
多线程多人聊天程序
一直很懒,不过这个程序写得还挺顺利的,用 JAVA 进行网络编程和多线程编程很方便,只是界面编程比较麻烦点,不过为了省事我的界面做得挺简洁的。
不过代码写得还是挺难看嘀,太紧凑了,个人还是比较喜欢自己编的 C++ 程序的代码结构。
这个大概就是这个学期我唯一一件认真做的和课程相关密切的事情了。
工程文件和程序已上传,但是还在审阅中。。稍后可在http://download.csdn.net/user/Rappy/下载。
报告如下:
多线程多人聊天程序
实验目的
编写一个多人聊天的客户/服务器多线程聊天室程序。
理解TCP协议和多线程编程.。
了解聊天软件的基本原理。
实验内容
聊天室程序功能简述:
聊天室程序分为服务器端,和客户端。
服务器程序作为一个中转站。所有客户端都只与服务器进行通信。
客户端程序以用户名登录。
服务器和客户端都显示在线的用户列表。
用户可以向所有用户发表消息。
实验过程
(1)采用 Eclipse 作为开发工具,JAVA 为开发语言。
(2)使用 JAVA 的 Socket 和 ServerSocket 这两个类可以在网络连接时不必关心底层操作,而使用DataInputStream 和 DataOutputStream 这两个类可以像本地输入输出那么方便。
扩展 JAVA 的 Tread 类,可以在进行多线程编程时不必关心阻塞等操作,只需要重载其运行方法 void run ();。
(3)消息的格式是由格式前缀以及内容构成:
客户端消息:
”L user” 表示以 user 为用户名来登录(log in)服务端;
“M XXX” 表示向服务端发送内容为 “XXX” 的聊天消息;
“Q” 表示退出登录(quit)。
服务端消息:
“A user1 user 2 ” 表示接受(accept)用户的登录请求并向其发送在线用户的名单;
“R” 表示拒绝(refuse)用户的登录请求,假如用户名已被占用。
“M XXX” 表示服务端向在线用户广播内容为