1、基于基于 TCPTCP 协议编程的网络聊天室协议编程的网络聊天室 一、题目要求 (一)设计内容 基于 TCP 协议编程的方式,编写程序模拟网络聊天室的运行过程。 (二)设计要求 1.采用 C/S 模式,基于 TCP 协议编程的方式,使得各个用户通过服务器转发 实现聊天的功能。 2.分为两大模块:客户端模块和服务器端模块。 3.客户端模块的主要功能: 1)登陆功能:用户可以注册,然后选择服务器登入聊天室。 2)显示用户:将在线用户显示在列表中。 3)接收信息:能接收其他用户发出的信息。 4)发送信息:能发出用户要发出的信息。 4.服务器端模块的主要功能: 1)检验登陆信息:检查登陆信息是否正确,
2、并向客户端返回登陆信息,如 信息正确。就允许用户登陆。 2)显示在线状态:将该用户的状态发给各在线用户。 3)转发聊天信息:将消息转发给所有在线的用户。 5.编程语言不限。 二、需求分析 在客户端界面,要实现用户登陆和注册功能,登陆和注册要检验名称;当用 户成功登陆时,可以通过用户在线列表查看在线的用户;当用户发送信息时,有 一定的要求, 比如必须有用户在线, 并且内容不能为空时, 才可以成功发送信息, 发送的信息可以显示在消息显示列表中, 接收到的消息也可以显示在消息列表中。 在服务器端界面,要实现用户登陆信息的检验,并且能够向客户端返回登陆 信息,如果信息正确,则用户可以登陆,否则,不能登
3、陆,在服务器端界面,可 以显示所有用户的状态信息,并且将用户的状态发送给在线用户查看。 三、模块划分 (一)客户端模块 1、连接服务器(登陆)功能:在客户端对应的文本框中输入要连接的端口 号,服务器 IP,和用户名,点击连接按钮,显示成功连接,用户登陆成功。 2、显示用户:当用户连接到服务器时,将会显示在服务器及在线用户的列 表中。 3、接收/发送信息:在客户端写消息文本框中输入要发送的消息,点击发送 按钮,即可在消息显示列表中显示要发送的消息。 4、断开服务器功能:在客户端点击断开按钮,即可断开与服务器的连接。 (二)服务器模块 1、启动服务器:在服务器端输入要启动的端口号以及人数上限,点击
4、启动 按钮,显示服务器成功启动。 2、停止服务器:在服务器端点击停止按钮,显示服务器成功停止,即可停 止相应的服务器端口。 3、显示在线用户:当用户成功登陆后,可在在线用户文本框中显示在线用 户信息。 4、发送消息:在服务器端写消息文本框中输入要发送的消息,点击发送按 钮,在消息显示区即可显示发送的消息。 5、人数上限:当在线用户已达上限时,其他用户将不能连接到此聊天室。 四、实现思路 (一)总体功能结构图 1、客户端 (1)关键代码 textArea = new JTextArea(); textArea.setEditable(false); textArea.setForeground(
5、Color.blue); textField = new JTextField(); txt_port = new JTextField(“8888“); txt_hostIp = new JTextField(“127.0.0.1“); txt_name = new JTextField(“lily“); btn_start = new JButton(“连接“); btn_stop = new JButton(“断开“); btn_send = new JButton(“发送“); listModel = new DefaultListModel(); userList = new JLi
6、st(listModel); northPanel = new JPanel(); northPanel.setLayout(new GridLayout(1, 7); northPanel.add(new JLabel(“端口号“); northPanel.add(txt_port); northPanel.add(new JLabel(“服务器 IP“); northPanel.add(txt_hostIp); northPanel.add(new JLabel(“姓名“); northPanel.add(txt_name); northPanel.add(btn_start); northPanel.add(btn_stop); northPanel.setBorder(new TitledBorder(“连接信息“); rightScroll = new JScrollPane(textArea); rightScroll.setBorder(new TitledBorder(“消息显示区“); leftScroll = new JScrollPane(user