生产实习报告

时间:2024.4.13

管理学院实习总结报告


管理学院实习总结报告内容


第二篇:简单的Java网络即时通讯系统实习报告


xxxJAVA程序设计》实习报告

实习性质:         课程实习       

实习单位:                         

学    院:                         

班    级:                         

学生姓名:            xxx         

学    号:                         

指导老师:                         

实习时间:    20##-6-1020##-6-14  


Java网络即时通讯系统

一、       实习目的

Java网络即时通讯系统的开发是一个实践教学环节,旨在使学生通过系统开发过程,培养创造性的设计能力和分析、解决问题的能力。巩固学生已学知识,使学生熟悉应用系统开发过程,提高学生对知识的融会贯通能力及动手能力。

二、       实习内容及要求

问题描述:

本实习以Java在网络通讯上的应用为主题,在熟悉Java语言在网络通信中的特点的基础上,利用Java的跨平台,安全性和多线程等众多优点,开发一个Java在网络通讯上的编程实例:即时通讯聊天。

Java网络即时通讯系统设计要求:

即时通讯系统主要采用Java语言实现服务器,客户端程序的功能。本系统是基于TCP协议的编程,实现了网上聊天功能。

该聊天系统采用C/S架构,由服务服务器端和客户端组成。

服务器端具有以下功能:

(1) 启动服务器,建立侦听,接受客户端连接。

(2) 接收、转发聊天信息。

(3) 接受客户端关闭消息。

聊天客户端具有如下功能:

(1) 连接服务器,发送用户登录请求。

(2) 向服务器发送聊天信息。

(3) 接收服务器端转发的聊天信息。

三、       实习内容及结果

1.需求分析

(1)功能需求

服务器端:

1、启动服务器,建立侦听,接收客户端连接。

2、接收、转发聊天信息。

3、接收客户端关闭消息。

客户端:

1、连接服务器,发送用户登录请求。

2、向服务器发送聊天信息。

3、接收服务器端转发的聊天信息。

(2)用例图

.

 

2. 详细设计(各个模块流程图或类图)

2.系统实现(实现结果截图)

3.系统发布与运行

第一步:在netbeans中进行清理构建在项目的dist文件夹中会出现

第二步:通过“j2ewiz”对项目进行打包。

第三步:打包软件的第一步通过浏览项目找到第一步中的Employee

第四步:点击下一步后选择weindows窗口程序。

第五步:点击选择就会出现右边的窗口然后就是挑选出服务器点击确定。

第六步:

第七步:

第八步:这一步你可以选择修改你所打包的名字。

第九步:

第十步:客户端的操作跟服务器的是相同的,只有在第五步的选择时是选择的客户端。

最后的结果:

四、       总结

在本次实训当中我觉得学到很多,给我的感觉也很不一样,这么一个小项目就能如此复杂,一些细节上一步留神就会出错。这次实训,任务是让我们做一个简易的基于Java语言的聊天室,虽说是个比较简易的聊天工具,但是对于我来说无疑是一件非常困难的是。所有的界面都需要用代码实现,对于用代码构建窗架虽说不是很困难,但也是很繁杂的一个过程。我们试训时间只有一周的左右,要想做得很完美的聊天室那是不太现实,而且制作他们的还是我们这一群小菜鸟。我觉得,这样的实训重要的不是要我们在这一周内能做出多么完美的成果,而是自己在这一周内能学到什么,更不是为了完成最终作业二实训。

通过这次学习,我学到了不少实际编程的知识。 我刚开始很自信自己能顺顺利利编写成功,但这一过程并不太顺利。用了,两天的时间做出了一个功能近似得模子,但总是发现和我要实现的即时通讯聊天功能相差甚远。后来我抛弃了那个例子,全部重写,磕磕绊绊的不断发现错误,并改正它们,功夫不负有心人人,我的程序最后运行成功了。

实训的时间是短暂的,实训中也难免会遇到许许多多的问题,所以也不可能在这么短的时间内都解决。实训与平时的上课显然不同,实训中老师不会也不可能仔细的讲解每个知识点,否则的话一个月都不知道够不够。实训考研的就是我们自己能不能在逆境中成长,独立自主的完成老师下达的每个任务,但有必要的是不懂得还是及时询问老师或这寻求同学的帮助还活着上网查查资料也是可行的。实训中态度很重要,摆正自己的心态,只有自己付出过,当程序运行成功时得那种喜悦才会令自己莫名的自豪感。

众所周知,互联网从诞生以来,就开始影响着地球上的每一个角落,给予了人类一种全新的生活方式,随着互联网技术的不断发展,新兴技术也是层出不穷,及时通讯系统就是这么一种以聊天通讯形式为主的广受欢迎的互联网技术之一。

转眼间一周的实训就这样过去了,这让我对java的认识又加深了,java语言是当前最流行的语言之一,它纯面向对象的语言,封装性好,灵活,对以后我们学习其他语言也起到一定的辅助作用。

在设计的过程中了解到自己的知识还是比较有限,使得程序还不够完善。回顾此次Java,至今仍感概很多,的确,从选题到定稿,从理论到实践,整整一星期的日子里,可以说是苦多于甜,但是可以学到很多东西,同时不仅可以巩固以前学的东西,而且学到了很多课本上学不到的东西,通过本次课程设计,使得自己懂得理论和实践相结合起来,从理论中得出结论,才能真正掌握这门技术,也提高了自己独立思考的能力,在设计的过程中,可以自己解决。真正体会到要将一门知识学的更深入,必须加强实践,多练习,才能发现问题所在。

五、       附录(系统代码)

1.服务器端

import java.net.*;

import java.io.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.logging.Level;

import java.util.logging.Logger;

public class NetChatServer extends JFrame {

      static JTextArea jtaInputChat;

    JButton btnStart;

    JButton btnStop;

    JPanel pNorth;

    JScrollPane jspArea;

    ServerSocket ss = null;

    Socket s = null;

    DataInputStream dis = null;

  //  static JTextArea tfdUser;

    public static void main(String[] args) {

        new NetChatServer();

    }

    public NetChatServer() {

        btnStart = new JButton("启动服务器");

        btnStop = new JButton("关闭服务器");

        pNorth = new JPanel();

        jtaInputChat = new JTextArea(100,300);

        jspArea = new JScrollPane(jtaInputChat);

        //jspArea.getViewport().add(tfdUser);

        Container contentPane = this.getContentPane();

        BorderLayout bl = new BorderLayout();

        setLayout(bl);

        pNorth.add(btnStart);

        pNorth.add(btnStop);

       

        jtaInputChat=new JTextArea(15,30);

        jspArea.getViewport().add(jtaInputChat);

        contentPane.add(pNorth, BorderLayout.NORTH);

        contentPane.add(jspArea, BorderLayout.CENTER);

  

        EventAction ea = new EventAction();

        btnStart.addActionListener(ea);

        btnStop.addActionListener(ea);

        this.setTitle("服务器端");

        this.setVisible(true);

        this.setSize(300,300);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    class EventAction implements ActionListener {

        public void actionPerformed(ActionEvent ae) {

            if (ae.getSource() == btnStart) {

                   btnStart.setEnabled(false);

                   btnStop.setEnabled(true);

                   jtaInputChat.append("服务器已启动\n");

                   jtaInputChat.setEditable(false);

                   ServerThread st=new ServerThread();

                   st.start();

            }

            if (ae.getSource() == btnStop) {

                //jtaInputChat.setText();

                jtaInputChat.append("服务器已关闭\n");

                btnStart.setEnabled(true);

                btnStop.setEnabled(false);

            }

        }

    }

}

2.客户端

import java.io.*;

import java.net.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.logging.Level;

import java.util.logging.Logger;

public class NetClient extends JFrame implements ActionListener, Runnable {

    JLabel lblUser, lblServerAdress, lblServerPort;

    JTextField tfdUser, tfdSendMessage, tfdServerAdress, tfServerPort;

    JButton btnIn, btnOut, btnSend;

    JTextArea taMessages;

    String strip, strport;

    DataOutputStream dos;

    DataInputStream dis;

    Socket s;

    Thread t;

    public static void main(String[] args) {

        new NetClient();

    }

    public NetClient() {

        lblUser = new JLabel("用户名");

        tfdUser = new JTextField(10);

        btnIn = new JButton("进入聊天室");

        btnOut = new JButton("退出聊天室");

        btnOut.setEnabled(false);

        tfdSendMessage = new JTextField(20);

        btnSend = new JButton("发送");

        taMessages = new JTextArea(10, 40);

        taMessages.setEditable(false);

        lblServerAdress = new JLabel("服务器地址");

        lblServerPort = new JLabel("服务器端口");

        tfdServerAdress = new JTextField(10);

        tfServerPort = new JTextField(10);

        tfdServerAdress.setEnabled(false);

        tfServerPort.setEnabled(false);

        Container contentPane = this.getContentPane();

        setLayout(new BorderLayout());

        JPanel jpEast = new JPanel(new GridLayout(4, 1));

        jpEast.add(lblServerAdress);

        jpEast.add(tfdServerAdress);

        jpEast.add(lblServerPort);

        jpEast.add(tfServerPort);

        contentPane.add(jpEast, BorderLayout.EAST);

        JScrollPane jspCentre = new JScrollPane(taMessages);

        contentPane.add(jspCentre, BorderLayout.CENTER);

        JPanel jpSouth = new JPanel();

        jpSouth.add(tfdSendMessage);

        jpSouth.add(btnSend);

        contentPane.add(jpSouth, BorderLayout.SOUTH);

        JPanel jpNorth = new JPanel();

        jpNorth.add(lblUser);

        jpNorth.add(tfdUser);

        jpNorth.add(btnIn);

        jpNorth.add(btnOut);

        contentPane.add(jpNorth, BorderLayout.NORTH);

        btnIn.addActionListener(this);

        btnOut.addActionListener(this);

        btnSend.addActionListener(this);

        this.pack();

        this.setVisible(true);

        this.setTitle("客户端");

        this.setSize(500, 400);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ConnectServer();

    }

    void ConnectServer() {

        try {

            s = new Socket("127.0.0.1", 8888);

            InetAddress ip = s.getInetAddress();

              strip = String.valueOf(ip);

            strport = String.valueOf(s.getPort());

            tfdServerAdress.setText(strip);

            tfServerPort.setText(strport);    

            OutputStream os = s.getOutputStream();

            dos = new DataOutputStream(os);

            InputStream is = s.getInputStream();

            dis = new DataInputStream(is);

        } catch (UnknownHostException ex) {

            System.out.println("找不到主机!");

        } catch (IOException ex) {

            System.out.println("传输异常");

        }

    }

    public void actionPerformed(ActionEvent ae) {

        if (tfdUser.getText().equals("")) {

            tfdSendMessage.setEditable(false);

        } else if (ae.getSource() == btnIn) {

            if (!tfdUser.getText().equals("")) {

                try {

                    tfdSendMessage.setEditable(true);

                    dos.writeUTF(tfdUser.getText() + "进入聊天室\n");

                    dos.flush();

                    tfdUser.setEditable(false);

                    btnIn.setEnabled(false);

                    btnOut.setEnabled(true);

                    btnSend.setEnabled(true);

                    t = new Thread((Runnable) this);

                    t.start();

                } catch (IOException ex) {

                    System.out.println("进入聊天室发送失败");

                }

            } else {

                JOptionPane.showMessageDialog(null, "请输入用户名!");

            }

        } else if (ae.getSource() == btnOut) {

            try {

                tfdSendMessage.setEditable(false);

                dos.writeUTF(tfdUser.getText() + "退出聊天室\n");

                btnOut.setEnabled(false);

                    dos.flush();                  

            } catch (IOException ex) {

                Logger.getLogger(NetClient.class.getName()).log(Level.SEVERE, null, ex);

            }

        } else if (ae.getSource() == btnSend) {

            if (!tfdSendMessage.getText().equals("")) {

                try {

 dos.writeUTF(tfdUser.getText() + "对大家说:" + tfdSendMessage.getText() + "\n");

                        dos.flush();

                    tfdSendMessage.setText(null);

                } catch (IOException ex) {

                    Logger.getLogger(NetClient.class.getName()).log(Level.SEVERE, null, ex);

                }

            } else {

                JOptionPane.showMessageDialog(null, "不能为空!");

            }

        }

    }

    public void run() {

        while (true) {

            try {

                if (dis != null) {

                    taMessages.append(dis.readUTF());

                }

            } catch (IOException ex) {

                System.out.println("退出聊天室,读取数据出错");

                System.exit(0);

            }

        }

    }

}

线程一ServerThread

import java.io.*;

import java.net.*;

import java.util.ArrayList;

import java.util.logging.Level;

import java.util.logging.Logger;

public class ServerThread extends Thread {

    ServerSocket ss=null;;

    DataInputStream dis=null;

    DataOutputStream dos=null;

    Socket s=null;

    ArrayList<ClientThread> NetClient;

    ArrayList<String> taMessages;

    public ServerThread(){

        try{

            ss = new ServerSocket(8888);

            NetClient = new ArrayList<ClientThread>();

            taMessages = new ArrayList<String>();

        }catch(IOException ex){

            Logger.getLogger(ServerThread.class.getName()).log(Level.SEVERE, null, ex);

        }

        BroadCastThread bct = new BroadCastThread(this);

        bct.start();

    }

    public void run() {      

            try {

                while (true) {

                s = ss.accept();

                dis = new DataInputStream(s.getInputStream());

                dos = new DataOutputStream(s.getOutputStream());

                ClientThread ct = new ClientThread(dis, dos, this);

                ct.start();

                synchronized (NetClient) {

                    NetClient.add(ct);

                }

                }

             }catch (IOException ex) {

                System.out.println("连接客户机失败!" + ex.getMessage());

                System.exit(0);        

        }finally {

           

                try {

                    if (dis != null) {

                        dis.close();

                    }

                    if (s!= null) {

                        s.close();

                    }

                    if (ss != null) {

                        ss.close();

                    }

                } catch (IOException ex) {

                }          

        }

    }

}

线程二ClientThread

import java.net.Socket;

import static Text2.NetChatServer.jtaInputChat;

import com.sun.corba.se.spi.activation.Server;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.util.logging.Level;

import java.util.logging.Logger;

public class ClientThread extends Thread{

  DataInputStream   dis=null;

  DataOutputStream dos=null;

  Socket s=null;

  ServerThread st=null;

    public ClientThread(DataInputStream dis, DataOutputStream dos, ServerThread st) {

        this.dis = dis;

        this.dos = dos;

        this.st=st;

    }

    public void run() {

        try {

            while (true) {

                String chat_in = dis.readUTF();

                synchronized (st.taMessages) {

                    if (chat_in != null) {

                        st.taMessages.add(chat_in);

                        NetChatServer.jtaInputChat.append(chat_in);

                    }

                }

            }

        } catch (IOException ex) {

            System.out.println("读取数据出错!");

        }

    }

}

线程三BroadCastThread

import java.io.DataInputStream;

import java.io.IOException;

import java.util.logging.Level;

import java.util.logging.Logger;

public class BroadCastThread extends Thread {

    ServerThread st = null;

    ClientThread ct = null;

    String str = null;

    public BroadCastThread(ServerThread st) {

        this.st = st;      

    }

    public void run() {

        while (true) {

            if (st.taMessages.isEmpty()) {

                continue;

            }

            synchronized (st.taMessages) {

                str = st.taMessages.get(0);

                st.taMessages.remove(0);

            }

            System.out.println(str);

           

            synchronized (st.NetClient) {

                for (int i = 0;i < st.NetClient.size();i++) {

                    try {

                        ct = st.NetClient.get(i);

                        ct.dos.writeUTF(str);

                    }

                    catch (IOException ex) {

                        Logger.getLogger(BroadCastThread.class.getName()).log(Level.SEVERE, null, ex);

                    }

                    System.out.println(i);

                }

               

            }

        }

    }

}

六、       教师评语及分数

更多相关推荐:
生产实习报告范文

IE生产实习报告院系管理工程学院姓名方宗炼专业工业工程班级081班学号3080502101指导老师费志敏曹邦平梁艳叶逊王志国刘从虎唐娟完成时间20xx年5月10日20xx工业工程生产实习报告第一章绪论11实习目...

生产实践实习实习报告

生产实践实习实习报告学科专业武器系统与工程弹药方向学生姓名张洪铭学号1101510340实习日期20xx年3月实习地点豫西工业集团有限公司指导老师兵老师张庆老师南京理工大学机械工程学院一实习内容十天的实习生...

大学生生产实习报告

生产实习报告学院专业年级姓名学号一概述实习目的生产实习是高等工科院校教学计划中的一个重要的实践性教学环节为了响应课本知识与实践相结合的教学宗旨XXXX大学将生产实习纳入大学本科的教学计划中通过实习达到以下目的1...

一汽大众生产实习报告

姓名:吴彦民院系:广东机电职业技术学院机械工程系专业:数控技术一、实习目的....................................................................…

生产实习报告

生产实习报告实习地点东风汽车公司湖北十堰实习时间学生姓名班级学号一生产实习内容每天的实习内容字数不应少于1000字要求字迹工整11湖北精益高精铜板带有限公司时间按照本组的时间安排1生产流程2我的体会我认为上述的...

电气生产实习报告

生产实习报告实习名称电气学院生产实习学生李晓生学号310808010812学院电气工程与自动化学院专业电气工程及其自动化专业指导老师王玉梅王新掌孙岩州许孝卓目录一实习目的2二实习安排2三实习内容2四实习过程31...

生产实习报告

东北大学秦皇岛分校课程设计报告用纸东北大学秦皇岛分校自动化工程系学年第学期生产实习报告学生姓名朱伟龙专业自动化班级学号5080110指导教师高原实习时间20xx7117181东北大学秦皇岛分校课程设计报告用纸一...

生产实习报告

南昌工程学院水工生产实习报告姓名方磊班级11水工3班学号20xx100729日期20xx年11月20日至23日前言转眼之间我们都已经大四了马上就要毕业了学校为了巩固我们上课所学的内容加深我们的印象同时也为了增强...

生产实习报告

燕山大学生产实习报告学院信息科学与工程学院年级专业09计算机应用2班学生姓名李倩指导教师陈子阳实习日期20xx年8月27日摘要生产实习的目的是计算机科学与技术专业本科生教学的必要环节是学生走向工作岗位研究岗位之...

一拖生产实习报告

湘潭大学生产实习报告班级学号姓名时间目录前言1第一章一拖及中信重工概况3第二章实习历程一安全教育7二中实洛阳工程塑料有限公司9三中信重工机械股份有限公司11四中信重工发电设备厂13五一拖工程机械有限责任公司15...

包钢生产实习报告-

目录引言01炼铁厂生产实习报告211炼铁厂生产工艺212主要产品生产规模313主要设备工作原理314设备维修管理42炼钢厂生产实习报告521炼钢厂生产工艺522主要产品生产规模523主要设备工作原理75薄板连铸...

电子科技大学生产实习报告

电子科技大学生产实习报告学生姓名学号班号实习时间实习地点带队老师姓名电子科技大学生产实习报告一实习项目名称学习使用MSExpressionBlend进行网页设计二实习时间地点时间20xx年11月26号11月27...

生产实习实习报告(35篇)