java局域聊天室实践总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北科技师范学院
JA V A程序设计课程设计
个人实习总结
实习类型课程设计
实习单位
指导教师
所在院(系)信息技术系
班级
姓名
学号_
一、实习时间和地点
时间:2015.3.17-2015.4.14
地点:F310、F311
二、实习的内容
我所开发的系统是:局域网聊天系统。系统功能简要说明如下:
该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。1、服务器:负责处理各个客户端的信息,并负责将信息进行转发。①服务器主要负责响应客户端的的各种信息,包括链接服务器,用户信息发送,各个客户端的信息相互转发。②服务器的实现有Server类,Server类主要是进行初始化的工作2、客户端:用户使用界面,负责接受信息以及与服务器进行通信。①客户端负责为用户提供聊天界面,将信息发送至服务器,接受服务器的反馈信息等一系列的工作。②客户端的实现有Client类,Client类负责与服务器,其它客户端进行通信。
1.连接:点击“连接”按钮之后将信息发送到服务器端,服务器端创建相应的连接,并将更新后的用户列表发送给所有用户。
2.发送:根据发送者、发送对象、发送的话创建一个字段发送到服务器端。
3.清空:清空客户端接收信息聊天对话框。
4.私聊TA:选择在线主机ip,根据ip地址发送一个私密聊天请求到服务器,服务器选择相
应的地址进行信息发送。本程序可以有多个用户,只需在一台服务器上运行服务端程序,所有的用户连接上了之后就可以正常通信。
人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。因此我们这个聊天室选择了简洁的界面搭建。因为之前学过JFrame类的使用,所以界面搭建部分代码如下:
public class TCPClient extends JFrame {
public static String olip;
private static final long serialVersionUID = 1L;
JTextArea jtaContent = new JTextArea();
JTextField jtaInstant = new JTextField();
JButton jbSend = new JButton("发送");
JButton jbConnect = new JButton("连接");
JButton jbClear = new JButton("清空");
JLabel jlTip=new JLabel("在线主机");
JButton jbPChat=new JButton("私聊TA");
JPanel jpBtns = new JPanel();
JPanel jpContact=new JPanel();
public void launchFrame() {
jtaContent.setEditable(false);
jpBtns.setLayout(new GridLayout(1, 3, 5, 5));
jpBtns.add(jbConnect);
jpBtns.add(jbSend);
jpBtns.add(jbClear);
jpBtns.setBounds(0, 375, 350, 30);
JScrollPane jspText=new JScrollPane(jtaInstant);
jspText.setBounds(0, 310, 350, 65);
JScrollPane jspContactOL=new JScrollPane(jcbContact);
JScrollPane jspContent=new JScrollPane(jtaContent);
jspContent.setBounds(0, 0, 350, 300);
jpContact.setLayout(new GridLayout(5, 5, 1, 3));
jpContact.add(jlTip);
jpContact.add(jspContactOL);
jpContact.add(jbPChat);
jpContact.setBounds(350, 0, 135, 220);
add(jpContact);
add(jpBtns);
add(jspText);
add(jspContent);
setLayout(null);
setSize(500, 450);
setLocation(100, 100);
setTitle("Chat Client");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
由于本人学习的java不是特别扎实,所以界面的设计代码经过参考反复实验才达到要求。界面完成后才发现真正的挑战刚刚开始。我们需要得到本机ip地址并传送至服务器,部分代码如下:
InetAddress
myIP;myIP=InetAddress.getLocalHost();
s = new Socket(myIP.getHostAddress(), 9402);
然后我们发送IP地址,其他客户端收到此地址时会判别,判别为IP地址,其它客户端会将这一IP地址规划为在线用户:
InetAddressmyIP;
myIP=InetAddress.getLocalHost();
strIP=myIP.getHostAddress();
dos.writeUTF("a"+strIP);
我们还设计了一个私聊功能,所以就需要实现事件的监听:
Timer tm1=newTimer(1000,newActionListener(){
@Override
public voidactionPerformed(ActionEvent e) {
tm3.stop();jbPChat.setText("通知");
tm2.start();
}});
Timer tm2=new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
tm1.stop();
jbPChat.setText("有私聊消息");
tm3.start();
}});