JAVA
网络编程实践
一.项目简述和目的
聊天室允许多人进入,并设置广播、私语等多种聊天方式。本论文主要介绍了对网络聊天
程序的
设计的分析、设计的全部过程。
a培养实际
工作所需要的动手能力,进一步熟悉基本概念;
b熟练掌握对实际
问题的抽象技能,了解程序基本的流程;
c培养查阅资料,独立思考问题的能力。
二解题基本思路;
聊天室要实现 的基本功能就是可以实时接收和发送信息, 并能支持公聊和私聊的的方式, 能够查看聊天记录,多个人同时在线,一人发信息后,其他在线人员都能看到消息。还有就是实现私聊的功能就是一个人和另一个人聊天其余的在 线用户看不见聊天的内容,同是动态的现实右边框里面的在线人员的在线和下线以及退出。这里 要解决两个主要问题:一个是如何更新在线人员,一个如何更新消息。这 里考虑用两个全局变量,一个存储在线人员信息,一个存储消息。
Java聊天室客户/服务器
通信图
三.分析和设计
需求分析:本程序的要求为:设计聊天室,聊天室允许多人进入,并设置广播、私语 等多种聊天方式
功能设计:本程序要构建的聊天室属性的设计参照了 qq 聊天功能操作界面的基本功能, 其功能有以下几个方面:1)聊天室允许多人进入,并且有每一个聊天室正常运行。 2) 可并设置广播、私语等多种聊天方式。
开发环境:eclipse
程序框图
客户端
服务器端
四.主要程序
源代码;
服务器端程序:
import java.net.*;
import java.io.*;
import java.util.*;
/*聊天服务器端处理主类ChatServer*/
public class ChatServer implements Runnable{
public static final int PORT=1234;
protected ServerSocket listen;//定义服务器端套接字listen
static Vector connections;//向量类connections存放与服务器连接的客户线程
列表 Thread connect;//定义服务器端线程
//服务器构造初始化线程
public ChatServer(){
try{
listen=new ServerSocket(PORT);//使用本地IP地址创建一个服务器
}catch(UnknownHostException e2){
System.err.println("error:" + e2);
}
catch(IOException e){
System.err.println("error:" + e);
System.exit(1);
}
connections=new Vector(1000);
connect=new Thread(this);
connect.start();//服务器端程序启动
}
//服务器main()初始化
public static void main(String args[]){
new ChatServer();
System.out.println("Chat Server is starting!......");
//服务器线程connect操作run方法
}
public void run(){
try{
while(true){//始终监听来自网络端口的信息
Socket client=listen.accept();
//为每一个人分别启动一个客户端线程
FirstThread ft=new FirstThread(this,client);
ft.setPriority(Thread.MIN_PRIORITY);
ft.start();//客户端线程启动
connections.addElement(ft);//将客户端线程加入向量列表中
}
}catch(IOException e){
System.err.println("error:" + e);
System.exit(1);
}
}
//向聊天室所有人员发送普通话语信息
public void br
oadcast(String yaoshuode){