java局域聊天室实践总结

河北科技师范学院

JAVA程序设计课程设计

个人实习总结

实习类型       课程设计     

实习单位                    

指导教师                    

所在院(系)   信息技术系   

班    级                   

姓    名                    

学号          _
一、实习时间和地点

 时间: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();

}});

Timer tm3=new Timer(1000, new ActionListener() {

@Override public void actionPerformed(ActionEvent e) {

tm2.stop();

jbPChat.setText("请查收");

tm1.start();

}});

这样,当有私聊信息请求传送过来时通过这些提醒就可以实现私聊功能。起初我们有这些功能的想法,觉得通过网络书籍能够很方便的查找到。可是实际操作实验中遇到了不少困难。比如这个私聊功能的实现。刚开始连接成功后选择私聊对象,我们决定以IP地址为依据。加入选择IP地址功能后点击私聊,发现客户端可以收到私聊提示,可是却收不到具体的文字信息。为此我们查找了大量信息,终于成功的实现了私聊功能。

后来我想,能不能让服务器端连接数据库。在客户端设置一个注册界面,让用户更具体化,这样识别身份时就不用再使用IP地址。客户端用户的注册信息会保存在数据库里,下次登录客户端就用属于个人的ID和密码。首先要实现用户的注册:

 public void register(){   

String strServerIp = txtHost.getText(); 

  String strServerPort=txtPort.getText();  

 this.dispose(); 

 new Register(strServerIp,strServerPort); 

然后向服务器端发送“注册”的命令。服务器处理接收到的命令为“注册”时调用函数,合法注册后,向客户端发送“注册成功”的消息,并断开连接。由于时间关系,数据库未能完成,希望下次有机会可以完善。

  

三、心得体会

1.成绩与收获

这次软件开发让我学到了很多知识。只是只有转变成实际而有用的东西才能显现出它的价值。学习不只是学习理论只是,更重要的是自己的动手操作能力。这个软件工程的项目实战让我真切感受到软件开发的全过程,这让我明白软件的开发是一门艺术,而不是代码的简单叠加。这需要一个小组的共同努力。这次开发让我跟深入的去思考了一个软件的构成与实现。以前用通讯软件是从未思考过如何实现它的功能,等自己来做是才发现里面要考虑的东西很多。在实践中,我也学到了很多java编程方面的知识。

2.问题与不足

由于java编程运用的不是特别熟练,加上时间问题,我们的程序还有很多不尽如人意的地方。例如:很多功能没有实现(语音视频,文件传输,个人信息等等),并且界面比较粗糙。这些都是以后需要努力的地方。水平所限,致使程序实现的功能在方法上也许不是很完美,但我以后会多向老师请教,自己也要加强对java的学习。努力进一步提高自己的编程水平。

 

第二篇:Java聊天室制作

Java聊天室制作

Java聊天室制作

Java聊天室制作

Java聊天室制作

Java聊天室制作

Java聊天室制作

Java聊天室制作