JAVA实验8-网络编程-报告

合集下载

java编程实验报告

java编程实验报告

java编程实验报告Java编程实验报告引言:Java是一种广泛应用于软件开发领域的高级编程语言,具有跨平台、面向对象、安全性高等特点。

本篇文章将介绍我在Java编程实验中的实践和收获。

实验一:Hello World程序在本实验中,我学习了如何使用Java编写一个简单的Hello World程序。

通过这个实验,我了解了Java的基本语法和程序结构。

在编写过程中,我发现Java的语法规范相对严格,需要注意语句的结束符号和代码的缩进。

通过运行程序,我成功输出了"Hello World"这个简单的字符串,这让我对Java编程的基本流程和语法有了更深入的了解。

实验二:变量与运算符在本实验中,我学习了Java中的变量和运算符的使用。

通过编写程序,我实现了对不同类型的变量进行声明和赋值,并进行基本的运算操作。

在这个过程中,我发现Java的变量需要先声明后使用,而且在进行运算时需要注意数据类型的匹配。

通过这个实验,我对Java中的变量和运算符有了更深入的理解。

实验三:条件语句与循环结构在本实验中,我学习了Java中的条件语句和循环结构的使用。

通过编写程序,我实现了对不同条件进行判断,并根据不同的条件执行相应的操作。

同时,我还学习了循环结构的使用,通过循环语句实现了对一段代码的重复执行。

在这个实验中,我发现条件语句和循环结构是Java编程中非常重要的部分,能够帮助程序实现更复杂的逻辑。

实验四:数组和字符串在本实验中,我学习了Java中数组和字符串的使用。

通过编写程序,我实现了对数组和字符串的声明、赋值和操作。

在这个过程中,我发现Java中的数组和字符串是一种非常方便的数据结构,能够帮助程序处理大量的数据。

通过这个实验,我对Java中数组和字符串的使用有了更深入的了解。

实验五:面向对象编程在本实验中,我学习了Java中的面向对象编程的基本概念和使用。

通过编写程序,我实现了对类的定义、对象的创建和方法的调用。

网络编程实验报告

网络编程实验报告

【实验目的】掌握基于多线程并发服务器的基本设计框架和实现方法。

【实验性质】综合性实验【实验器材与所需软件】计算机、交换机、windows操作系统、java集成开发环境【实验学时】8学时【实验内容】实现一个多线程并发服务器(服务器功能自选),要求该服务器可以体现出同时为多个客户端服务的特性。

【实验过程与步骤】实验设计并实现了一个基于多线程并发服务器的网络聊天室工具。

1,需求分析:工具采用了Client/Server结构,将聊天室划分为两个子程序:客户端子程序、服务器端子程序。

●客户端程序:实现客户端与服务器端进行连接,并可与服务器端进行实时通讯。

●服务器端:实现建立与多个客户端程序之间的连接,管理连接并能够通过多线程技术同时与多个客户端进行实时通讯。

2,系统设计:系统的设计中,客户端与服务器端的连接,通过TCP/IP网络建立,并依托Socket进行实时通讯。

系统中,各个模块之间的关系如下图所示:上图中,显示同一服务器,通过网络可以同时与多个客户端程序建立连接并实现实时通讯功能,通讯流程如下图所示:根据图示,客户端与服务器之间通过Socket()进行实时通讯,通讯步骤是:服务器监听、客户端发出请求、服务器接受、建立连接、交互通讯、关闭连接。

另外,由于聊天室工具必须实现多客户端同时连接通讯的要求,因此,在服务器端设计时考虑采用多线程技术,每个服务器拥有多个服务线程,每个线程负责与一个客户端进行连接通讯,从而达到一个服务器同时与多个客户端并发通讯的效果。

3,系统实现:在网络聊天室的最终实现时,设计服务器类、服务器线程类、客户端类以及系统界面类:●服务器类 Class Server:主要负责管理系统中的服务器线程,通过线程管理与客户端之间的连接及通讯,是服务器的主要管理端。

●服务器线程类 Class ServerThread:线程类中,实现了具体的服务器与客户端之间一一对应的连接关系,并通过Socket与客户端进行实时通讯。

java语言程序设计实验报告

java语言程序设计实验报告

java语言程序设计实验报告篇一:Java实验八报告《Java语言程序设计》实验报告学生姓名:郭倩班级:信息112学号:201152275208实验地点:经管实验中心证券实验室指导教师:赵利平实验日期:实验环境:Windows 2000+JDK1.61. 实验目的(1)理解子类派生的概念(2)学习创建子类对象(3)掌握方法覆盖的使用2.实验内容(1)设计三个类:完成实验教材P52页程序清单4-2;(2)通过编制一个程序来加深对嵌套类、内部类和局部类的理解:完成实验教材P56页程序清单4-3;2. 实验过程报告撰写具体要求:上述实验内容要求写出源代码及运行结果。

实验内容(1)://Polymorphism.abstract class Student{final static int CourseNo=3;String name;String type;int[] courses;String courseGrade;public Student(String name){=name;courses=new int[CourseNo];courseGrade=null;}public abstract void calculateGrade();public String getName(){return name;}public String getType(){return type;}public String getCourseGrade(){return courseGrade;}public int getCourseScore(int courseNumber){return courses[courseNumber];}public void setName(String name){=name;}public void setType(String type){this.type=type;}public void setCourseScore(int courseNumber,int courseScore){this.courses[courseNumber]=courseScore;}}class Undergraduate extends Student{public Undergraduate(String name){super(name);type="本科生";}public void calculateGrade(){int total=0;double average=0;for(int i=0;i<CourseNo;i++){total+=courses[i];};average=total/CourseNo;if(average>=80&&average<100) coursegrade="优秀" else="" average="">=70&&average<80) coursegrade="良好" else="" average="">=60&&average<70) coursegrade="一般" else="" average="">=50&&average<60) courseGrade="及格";else courseGrade="不及格";}}class Postgraduate extends Student{public Postgraduate(String name){super(name);type="研究生";}public void calculateGrade(){int total=0;double average=0;for(int i=0;i<CourseNo;i++){total+=courses[i];};average=total/CourseNo;if(average>=90&&average<100) coursegrade="优秀" else="" average="">=80&&average<90) coursegrade="良好"else="" average="">=70&&average<80) coursegrade="一般" else="" average="">=60&&average<70) courseGrade="及格";else courseGrade="不及格";}}public class Polymorphism{public static void main(String[] args){Student[] students=new Student[5];students[0]=new Undergraduate("陈建平");students[1]=new Undergraduate("鲁向东");students[2]=new Postgraduate("匡晓华");students[3]=new Undergraduate("周丽娜");students[4]=new Postgraduate("梁欣欣");for(int i=0;i<5;i++){students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for(int i=0;i<5;i++){students[i].calculateGrade();}System.out.println("姓名"+" 类型"+" 成绩");}}System.out.println("-------------------------"); for(int i=0;i<5;i++){ System.out.println(students[i].getName()+" "+students[i].getType()+" "+students[i].getCourseGrade()); }(1) 都有(2) Student[] students=new Student[5];(3) Student是抽象的,不能用new操作符创建抽象类的实例。

JAVA网络编程报告

JAVA网络编程报告

JA V A 网络编程学院:班级:姓名:学号:引言:近年来,随着全球信息化进程的不断发展,网络也在飞速发展。

出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。

在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。

然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。

这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。

为了解决上述矛盾,人们提出了许多方法。

提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。

然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。

基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。

它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。

基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。

它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。

基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。

设计目的:了解基于socket 的程序设计方法,增强程序编写能力,加深对计算机网络通信的理解。

Java网络编程实践课程设计报告书

Java网络编程实践课程设计报告书

J a v a网络编程实践课程设计说明书课程名称:Java网络编程课程设计题目:基于C/S的学生信息管理:学号:教学班号:指导教师:王小刚交通大学软件科学与工程系二○ 13 年 12 月 27 日任务书实现应用,可以通过网络在客户端对存放在服务器端的学生信息表(至少包含学号、、性别、年龄、籍贯等字段)学生纪录增、删、改、查,并返回结果。

要能通过菜单选择功能。

基于Socket,多客户端使用多线程,以能同时从多个客户端执行功能。

必须提供友好直观、布局合理的图形界面选择功能、显示信息和填写修改信息。

成员及分工列表图形界面设计者:数据库设计者: Socket设计者:多线程设计者:项目简述和目的熟悉JAVA 语法,掌握图形化界面、多线程、网络、数据库等综合编程,掌握用编程语言开发由若干功能组成的小型项目的基本流程,增强动手实践能力,巩固和加强书本知识的学习,体会JAVA编程的特点。

解题基本思路设计的信息管理系统中的窗体部分,没有使用菜单,而是按钮。

菜单虽然简单,方便,但我认为在窗体里运用按钮是有必要的,这样可以方便添加、删除,修改等动作,通过一步步地做,慢慢的集合,比较的清晰,还显得比较的有层次感. 利用Swing设计图形界面利用Access表设计数据库,利用socket设计网络信息管理模块分析和设计学生管理系统要实现查询,添加,删除,显示,修改等功能。

查询不存在要报错,添加相同也要报错,删除不存在的号也要报错,修改不成功也要报错。

如果成功的话也要提示。

而且每一步都要密码才能进行操作,否则报错提醒!主要程序源代码Client源代码package socket;import java.io.*;import .*;import java.awt.*;import javax.swing.*;import java.awt.event.*;class Client extends JFrame implements ActionListener//登入界面功能是输入正确的账号和密码才能进入,错误的话返回错误提示!{private JLabel usernameLabel;//帐号private JLabel a;//标题private JTextField usernameTextField;//帐号文本框private JLabel passwordLabel;//密码private JPasswordField passwordField;//密码文本框private JButton button1;//确定按钮private JButton button2;//取消按钮public Client(){super.setTitle("登录界面");Container c=getContentPane();c.setLayout(null);a=new JLabel("欢迎进入学生登入系统!");a.setBounds(50,30,300,30);a.setFont(new Font("黑色",Font.BOLD,25));usernameLabel=new JLabel("账号");usernameLabel.setBounds(50,90,170,30);usernameLabel.setFont(new Font("黑色",Font.BOLD,30)); usernameTextField=new JTextField();usernameTextField.setBounds(150,90,170,30); usernameTextField.setFont(new Font("宋体",Font.BOLD,20)); passwordLabel=new JLabel("密码:");passwordLabel.setBounds(50,120,170,30);passwordLabel.setFont(new Font("黑色",Font.BOLD,30)); passwordField=new JPasswordField();passwordField.setBounds(150,120,170,30);passwordField.setFont(new Font("黑色",Font.BOLD,30)); passwordField.setEchoChar('*');button1=new JButton();button1.setText("进入");button1.setFont(new Font("黑色",Font.BOLD,20));button1.setBounds(50,160,100,30);button2=new JButton();button2.setText("退出");button2.setFont(new Font("黑色",Font.BOLD,20));button2.setBounds(220,160,100,30);button1.addActionListener(this);//按钮监听button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.exit(0);}});c.add(passwordLabel);c.add(passwordField);c.add(usernameLabel);c.add(button1);c.add(button2);c.add(usernameTextField);c.add(a);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(400,300);setLocation(322,30);setVisible(true);}private void showText()//登入失败消息框{String xie;xie=usernameTextField.getText();JOptionPane.showMessageDialog(this.getParent(),"登入失败!"+xie);}private void showText1()//登入成功消息框{String xie;xie=usernameTextField.getText();JOptionPane.showMessageDialog(this.getParent(),"登入成功!"+xie);}public void actionPerformed(ActionEvent e)//按钮监听事件{Socket ssocket = null;String st1,st2,st3;final PrintWriter writer1;st1=usernameTextField.getText();st2=passwordField.getText();st3="进入"+","+st1+","+st2;//把帐号和密码打包成字符串try{ssocket=new Socket("localHost",10000);//创建socketwriter1=new PrintWriter(ssocket.getOutputStream());//发送给服务器!if(!(st1.equals(null)) && !(st2.equals(null)))//判断是否为空{writer1.println(st3);writer1.flush();}else if(st1.equals(null) || st2.equals(null))//判断是否为空{writer1.println("error1");writer1.flush();}BufferedReader read=new BufferedReader(new InputStreamReader(ssocket.getInputStream()));String s_red=null;System.out.println("please wait.......");while(true){s_red=read.readLine();if(s_red!=null)break;}if(s_red.equals("yes"))//读取服务端的容,如果是yes执行Client1的类{showText1();dispose();new Client1();}else//读取服务端的容,如果不是yes执行showText()报错提醒!{showText();usernameTextField.setText(null);passwordField.setText(null);}}catch (Exception e1){e1.printStackTrace();}}public static void main(String[] args)throws IOException{Client s=new Client();}}class Client1 extends JFrame //登录界面的类包含查询,删除,增添,修改,返回等按钮!共4个按钮监听对象!{private JButton button1,button2,button3,button4,button5,button6;public Client1(){super.setTitle("登录界面");Container c=getContentPane();setLayout(null);button1=new JButton();button1.setText("查询");button1.setFont(new Font("黑色",Font.BOLD,20));button1.setBounds(50,50,120,50);button2=new JButton();button2.setText("删除");button2.setFont(new Font("黑色",Font.BOLD,20));button2.setBounds(220,50,120,50);button3=new JButton();button3.setText("增添");button3.setFont(new Font("黑色",Font.BOLD,20));button3.setBounds(50,150,120,50);button4=new JButton();button4.setText("修改");button4.setFont(new Font("黑色",Font.BOLD,20));button4.setBounds(220,150,120,50);button5=new JButton();button5.setText("显示");button5.setFont(new Font("黑色",Font.BOLD,20));button5.setBounds(50,250,120,50);button6=new JButton();button6.setText("返回");button6.setFont(new Font("黑色",Font.BOLD,20));button6.setBounds(220,250,120,50);button1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client2();}});button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client4();}});button3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client3();}});button4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client5();}});button5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client6();}});button6.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client();}});c.add(button1);c.add(button2);c.add(button3);c.add(button4);c.add(button5);c.add(button6);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(400,450);setLocation(322,30);setVisible(true);}public static void main(String[] args)//throws IOException{new Client1();}}class Client2 extends JFrame implements ActionListener//查询类的功能是输入学号和密码,如果正确则返回成功的提醒,如果失败则返回失败的提醒,如果该学好存在,则返回存在的提醒!{private JLabel usernameLabel1;private JLabel usernameLabel2;private JLabel usernameLabel3;private JLabel usernameLabel4;private JLabel usernameLabel5;private JLabel usernameLabel6;private JLabel usernameLabel7;private JLabel usernameLabel8;private JTextField usernameTextField1;private JTextField usernameTextField2;private JTextField usernameTextField3;private JTextField usernameTextField4;private JTextField usernameTextField5;private JTextField usernameTextField6;private JTextField usernameTextField7;private JTextField usernameTextField8;private JButton button1;private JButton button2;private JLabel label1;public Client2(){super.setTitle("学生操作界面");Container c=getContentPane();c.setLayout(null);label1=new JLabel("欢迎进入学生查询系统!");label1.setBounds(40,20,400,30);label1.setFont(new Font("黑色",Font.BOLD,35));usernameLabel1=new JLabel("查询号");usernameLabel1.setBounds(70,110,200,30);usernameLabel1.setFont(new Font("黑色",Font.BOLD,30));usernameTextField1=new JTextField();usernameTextField1.setBounds(170,110,200,30);usernameTextField1.setFont(new Font("宋体",Font.BOLD,30));usernameLabel2=new JLabel("密码:");usernameLabel2.setBounds(70,150,200,30);usernameLabel2.setFont(new Font("黑色",Font.BOLD,32));usernameTextField2=new JTextField();usernameTextField2.setBounds(170,150,200,30);usernameTextField2.setFont(new Font("黑色",Font.BOLD,30));usernameLabel3=new JLabel("性别:");usernameLabel3.setFont(new Font("黑色",Font.BOLD,32));usernameLabel3.setBounds(70,190,200,30);usernameTextField3=new JTextField();usernameTextField3.setBounds(170,190,200,30);usernameTextField3.setFont(new Font("黑色",Font.BOLD,30));usernameLabel4=new JLabel("籍贯:");usernameLabel4.setBounds(70,230,200,30);usernameLabel4.setFont(new Font("黑色",Font.BOLD,30));usernameTextField4=new JTextField();usernameTextField4.setBounds(170,230,200,30);usernameTextField4.setFont(new Font("黑色",Font.BOLD,30));usernameLabel5=new JLabel("专业:");usernameLabel5.setBounds(70,270,200,30);usernameLabel5.setFont(new Font("黑色",Font.BOLD,30));usernameTextField5=new JTextField();usernameTextField5.setBounds(170,270,200,30);usernameTextField5.setFont(new Font("黑色",Font.BOLD,30));usernameLabel6=new JLabel(" :");usernameLabel6.setBounds(70,310,200,30);usernameLabel6.setFont(new Font("黑色",Font.BOLD,30));usernameTextField6=new JTextField();usernameTextField6.setBounds(170,310,200,30); usernameTextField6.setFont(new Font("黑色",Font.BOLD,30)); usernameLabel7=new JLabel(":");usernameLabel7.setBounds(70,350,200,30);usernameLabel7.setFont(new Font("黑色",Font.BOLD,30)); usernameTextField7=new JTextField();usernameTextField7.setBounds(170,350,200,30); usernameTextField7.setFont(new Font("宋体",Font.BOLD,30)); usernameLabel8=new JLabel("QQ:");usernameLabel8.setBounds(70,390,200,30);usernameLabel8.setFont(new Font("黑色",Font.BOLD,30)); usernameTextField8=new JTextField();usernameTextField8.setBounds(170,390,200,30); usernameTextField8.setFont(new Font("宋体",Font.BOLD,30));button1=new JButton();button1.setText("查询");button1.setFont(new Font("黑色",Font.BOLD,30));button1.setBounds(60,470,130,40);button2=new JButton();button2.setText("返回");button2.setFont(new Font("黑色",Font.BOLD,30));button2.setBounds(270,470,130,40);c.add(usernameLabel1);c.add(usernameLabel2);c.add(usernameLabel3);c.add(usernameLabel4);c.add(usernameLabel5);c.add(usernameLabel6);c.add(usernameLabel7);c.add(usernameLabel8);c.add(button1);c.add(button2);c.add(usernameTextField1);c.add(usernameTextField2);c.add(usernameTextField3);c.add(usernameTextField4);c.add(usernameTextField5);c.add(usernameTextField6);c.add(usernameTextField7);c.add(usernameTextField8);c.add(label1);button1.addActionListener(this);button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client1();}});setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(470,580);setLocation(322,30);setVisible(true);}public static void main(String[] args){Client2 s=new Client2();}private void showText(){String xie;xie=usernameTextField1.getText();JOptionPane.showMessageDialog(this.getParent(),"查询成功!"+xie); }private void showText2(){String xie;xie=usernameTextField1.getText();JOptionPane.showMessageDialog(this.getParent(),"该号不存在!"+xie);}public void actionPerformed(ActionEvent e){Socket ssocket = null;String str, st1,st2;final PrintWriter writer1;st1=usernameTextField1.getText();st2=usernameTextField2.getText();str="查询"+","+st1+","+st2;try{ssocket=new Socket("localHost",10000);writer1=new PrintWriter(ssocket.getOutputStream());if(!(st1.equals(null)) && !(st2.equals(null))){writer1.println(str);writer1.flush();}else if(st1.equals(null) || st2.equals(null)){writer1.println("error1");writer1.flush();}BufferedReader read=new BufferedReader(new InputStreamReader(ssocket.getInputStream()));String line=null;System.out.println("please wait.......");line=read.readLine();if(line.equals("Not1")){showText2();usernameTextField1.setText(null);usernameTextField2.setText(null);usernameTextField3.setText(null);usernameTextField4.setText(null);usernameTextField5.setText(null);usernameTextField6.setText(null);usernameTextField7.setText(null);usernameTextField8.setText(null);}else{String sarry[]=line.split(","); //usernameTextField1.setText(sarry[1]);usernameTextField2.setText(sarry[2]);usernameTextField3.setText(sarry[3]);usernameTextField4.setText(sarry[4]);usernameTextField5.setText(sarry[5]);usernameTextField6.setText(sarry[6]);usernameTextField7.setText(sarry[7]);usernameTextField8.setText(sarry[8]);showText();}}catch (Exception e1){e1.printStackTrace();}}}Server的源代码package socket;import java.io.*;import .*;import java.sql.*;public class Server //Server类通过引用来实现多线程{public static void main(String args[]){Thread1 s=new Thread1();s.start();}}class Thread1 extends Thread//多线程类{static ServerSocket server;static Socket ssocket;static BufferedReader reader1;static BufferedReader reader2;static String sql, databack;static Stringid,password,address,myname,class1,QQ,phone,sex,school;static ResultSet rs; static Statement stmt; staticConnection conn;public void run()//多线程的run()方法{try{final Stringdb_driver="sun.jdbc.odbc.JdbcOdbcDriver"; //连接多线程!final String db_url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=d:/my1.mdb";try{}catch(Exception e){e.printStackTrace();}try{server=new ServerSocket(10000);//建立端口System.out.println("服务器已经创建!等待客户机的.......");int flag=0;int flag1=0;while(true){ssocket=server.accept();//连接客户端System.out.println("完成!");reader1=new BufferedReader(newInputStreamReader(ssocket.getInputStream()));PrintWriter writer2=newPrintWriter(ssocket.getOutputStream());String s1=reader1.readLine();String sarry[]=s1.split(",");sql="select*from one";//连接数据库中的表名Class.forName(db_driver);conn=DriverManager.getConnection (db_url,"","");if(conn!=null){System.out.println("数据库已连接.....");}else{System.out.println("连接失败!");}stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(sarry[0].equals("进入"))//获取客户端的进入功能{while(rs.next()){id=rs.getString("ID"); password=rs.getString("password");if(sarry[1].equals(id) && sarry[2].equals(password)){intnumber1=Integer.parseInt(id);intnumber2=Integer.parseInt(password);if(number1==201211016 && number2==16){flag=1;break;}}}if(flag==1){writer2.println("yes");writer2.flush();flag=0;}else{writer2.println ("no");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("查询"))//获取客户端的查询功能{while(rs.next()){school=rs.getString ("school");id=rs.getString("ID");password=rs.getString("password");sex=rs.getString("sex");address=rs.getString("address");class1=rs.getString("class");myname=rs.getString("myname");phone=rs.getString("phone");QQ=rs.getString("QQ");if(sarry[1].equals(id) && sarry[2].equals(password)){flag1=1;break;}}if(flag1==1){rs.next();String A[]={school,id,password,sex,address,class1,myname,phone,QQ};databack="";for(int i=0;i<=A.length-1;i++){databack+=A[i];if(i!=A.length-1)databack+=",";}writer2.println (databack);writer2.flush();flag1=0;}else{writer2.println("Not1");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("添加"))//获取客户端的添加功能{int boolean1=0;while(rs.next()){id=rs.getString("ID");if(sarry[1].equals(id)){boolean1=0;break;}else{String s="insert intoone(ID,password,sex,address,class,myname,phone,QQ) values (?,?,?,?,?,?,?,?)";PreparedStatement stat1=conn.prepareStatement(s);stat1.setString(1,sarry[1]);stat1.setString(2,sarry[2]);stat1.setString(3,sarry[3]);stat1.setString(4,sarry[4]);stat1.setString(5,sarry[5]);stat1.setString(6,sarry[6]);stat1.setString(7,sarry[7]);stat1.setString(8,sarry[8]);stat1.executeUpdate();boolean1=1;break;}}if(boolean1==1){writer2.println("Y");writer2.flush();boolean1=0;}else{writer2.println("No11");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("删除"))//获取客户端的删除功能{while(rs.next()){id=rs.getString("ID");if(sarry[1].equals(id)){Strings="delete from one where ID=?"; PreparedStatement stat1=conn.prepareStatement(s); stat1.setString(1,sarry[1]);stat1.executeUpdate();flag=1;}}if(flag==1){writer2.println("Y");writer2.flush();flag=0;}else{writer2.println("N");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("修改")){sex=sarry[3];address=sarry[4];class1=sarry[5];myname=sarry[6];phone=sarry[7];QQ=sarry[8];while(rs.next()){Stringid1=rs.getString("ID"); String password1=rs.getString("password");if(sarry[9].equals(id1) && sarry[10].equals(password1)){flag=1;break;}}if(flag==1){String id2=sarry[9];id=sarry[1];password=sarry[2];String s="update one setpassword=?,sex=?,address=?,class=?,myname=?,phone=?,QQ=?,ID=? where ID=?";PreparedStatement stat1=conn.prepareStatement(s);stat1.setString(1,password);stat1.setString(2,sex);stat1.setString(3,address);stat1.setString(4,class1); stat1.setString(5,myname); stat1.setString(6,phone);stat1.setString(7,QQ);stat1.setString(8,id);stat1.setString(9,id2);stat1.executeUpdate();writer2.println("Y2");writer2.flush();flag=0;}else{ writer2.println("N2");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("显示")){Statement stmt1 =conn.createStatement();ResultSet rs1 =stmt1.executeQuery("select * from one");databack="";while(rs1.next()){Stringid=rs1.getString("ID");Stringpassword=rs1.getString("password");Stringsex=rs1.getString("sex");Stringaddress=rs1.getString("address");Stringclass1=rs1.getString("class");Stringmyname=rs1.getString("myname");Stringphone=rs1.getString("phone");StringQQ=rs1.getString("QQ");String xie=id+","+password+","+sex+","+address+","+class1+","+myname+","+phone+","+QQ+",";databack+=xie;flag1=1;}if(flag1==1){writer2.println (databack);writer2.flush();flag1=0;}else{writer2.println ("Not1");writer2.flush();}stmt.close();conn.close();}}}catch(Exception e){}finally{System.out.println("发生错误,请重试!");}try{if(reader1!=null){reader1.close();}if(ssocket!=null){ssocket.close();}}catch(Exception e1){}}catch(Exception e){System.out.println("false");}}}运行截图总结和体会经过本人的努力,学生管理系统终于做完了,经过这次课程设计,自己总结了这个学生信息管理系统的一些问题,不过收获还是颇为丰富的,再有理论知识上结合实践,使我学到了更多。

java Socket网络编程报告

java Socket网络编程报告
String s = dis.readUTF();
ta.append(s + "\n");
}
}
}
class Client {
public static void main(String[] args) throws IOException {
new ClientFrame("Client");
}
}
///////////////////////////////Server.java
super(title);
setSize(400, 300);
setLocation(400, 0);
...
show();
while (socket == null) {
try {
socket = new Socket("127.0.0.1", 1234);
} catch (IOException e) {
准备工作
及主要源程序
///////////////////Client.java
class ClientFrame extends Frame {
public TextField tf;
public TextArea ta;
Socket socket = null;
ClientFrame(String title) throws IOException {
程序调试能力
测试数据是否合理
程序设计实验报告
实验题目:Java网络编程
课程名称:Java程序设计
系部名称:自动化系
班级:计算0301
学号:01
姓名:
指导教师:么连福

网络编程实训大作业报告

网络编程实训大作业报告

一、引言随着信息技术的飞速发展,网络编程已经成为计算机科学与技术领域的一个重要分支。

为了提高我们的实际动手能力和理论联系实际的能力,我们选择了网络编程实训作为本次大作业。

通过本次实训,我们不仅掌握了网络编程的基本知识,还锻炼了团队协作和解决问题的能力。

以下是本次实训的大作业报告。

二、实训背景与目标1. 实训背景随着互联网的普及,网络编程技术在各个领域都得到了广泛应用。

为了提高我们的网络编程技能,我们选择了网络编程实训作为本次大作业。

2. 实训目标(1)掌握网络编程的基本概念和原理;(2)熟悉常用的网络编程技术,如TCP/IP、HTTP等;(3)掌握编程工具的使用,如Visual Studio、NetBeans等;(4)提高团队协作和解决问题的能力。

三、实训内容1. 项目概述本次实训大作业要求我们设计并实现一个基于TCP协议的简易聊天室。

该聊天室能够实现多用户同时在线聊天,用户之间可以发送文本消息。

2. 技术选型(1)编程语言:Java;(2)网络协议:TCP/IP;(3)开发工具:NetBeans;(4)数据库:无。

3. 功能模块(1)客户端模块:负责接收用户输入的消息,并将消息发送给服务器;同时,接收服务器发送的消息,显示在聊天窗口中。

(2)服务器模块:负责接收客户端发送的消息,并将消息广播给所有在线用户;同时,处理客户端的登录、注册等请求。

4. 实现步骤(1)搭建开发环境:安装Java、NetBeans等开发工具;(2)设计客户端界面:使用Swing组件设计聊天窗口、输入框、发送按钮等;(3)编写客户端代码:实现用户登录、注册、发送消息等功能;(4)编写服务器端代码:实现消息广播、用户管理等功能;(5)测试与调试:在本地环境中运行程序,进行功能测试和性能测试;(6)优化与完善:根据测试结果,对程序进行优化和改进。

四、实训成果与总结1. 成果展示本次实训大作业成功实现了一个基于TCP协议的简易聊天室,功能如下:(1)用户登录:用户可以通过用户名和密码登录聊天室;(2)发送消息:用户可以在聊天窗口中输入消息,点击发送按钮将消息发送给所有在线用户;(3)接收消息:用户可以接收其他用户发送的消息,并在聊天窗口中显示;(4)用户管理:管理员可以管理在线用户,包括查看在线用户列表、封禁用户等。

《网络编程》实验报告

《网络编程》实验报告

一、实验目的1. 理解网络编程的基本原理和概念。

2. 掌握TCP/IP协议栈的基本工作原理。

3. 学习使用Socket编程实现网络通信。

4. 熟悉网络编程中的多线程编程技术。

5. 提高实际编程能力和问题解决能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 20194. 网络编程库:Winsock三、实验内容1. 网络编程基础2. Socket编程3. 多线程编程4. 客户端-服务器模式四、实验步骤1. 网络编程基础(1)了解网络编程的基本概念,如IP地址、端口号、协议等。

(2)学习TCP/IP协议栈的工作原理,包括OSI七层模型和TCP/IP四层模型。

2. Socket编程(1)学习Socket编程的基本原理,包括Socket创建、连接、发送、接收和关闭等操作。

(2)编写一个简单的TCP客户端程序,实现与服务器端的通信。

(3)编写一个简单的TCP服务器程序,接收客户端的连接请求,并实现数据交互。

3. 多线程编程(1)学习多线程编程的基本原理,了解线程、进程、并发和同步等概念。

(2)在客户端程序中添加多线程,实现同时与多个服务器进行通信。

(3)在服务器程序中添加多线程,实现同时处理多个客户端的连接请求。

4. 客户端-服务器模式(1)实现一个简单的文件传输客户端,实现文件的发送和接收。

(2)实现一个简单的文件传输服务器,接收客户端的文件传输请求,并完成文件传输。

五、实验结果与分析1. 网络编程基础通过学习网络编程基础,我们了解了网络编程的基本概念和TCP/IP协议栈的工作原理,为后续的Socket编程打下了基础。

2. Socket编程(1)通过编写TCP客户端程序,实现了与服务器端的通信,验证了Socket编程的基本原理。

(2)通过编写TCP服务器程序,接收客户端的连接请求,并实现了数据交互,进一步巩固了Socket编程的知识。

3. 多线程编程通过在客户端和服务器程序中添加多线程,实现了同时与多个服务器进行通信和同时处理多个客户端的连接请求,提高了程序的并发处理能力。

JAVA网络编程实验报告

JAVA网络编程实验报告
}
public Circle(int x,int y,int r){ this.x=x; this.y=y; this.r=r;
}
public double zc(){ double Perimeter=2*3.14*r; return Perimeter;
}
public double mj(){ double Area=3.14*r*r; return Area;
str=new String(buf); x=Integer.parseInt(str.trim());
System.in.read(buf); str=new String(buf); y=Integer.parseInt(str.trim());
System.in.read(buf); str=new String(buf); r=Integer.parseInt(str.trim());
}
public double zc(){ double Perimeter=2*3.14*r; return Perimeter;
} public double mj(){
double Area=3.14*r*r; return Area; } } class Cylinder extends Circle{ public int h; public Cylinder(int x,int y,int r,int h){ this.x=x; this.y=y; this.r=r; this.h=h; } public double mj1(){ return 2*mj()+h*zc(); } public double tj(){ return mj()*h; }
class Circle { public int x; public int y; public int r;

java实验报告——JDBC与网络编程

java实验报告——JDBC与网络编程

2
实验报告
实验解答: 1) 写出数据库名称,及其中的表名称,画出各表的结构,要求给出字段名、类型和 大小。 数据库名称:stu 表:dangan、course、grade dangan: 列名 数据类型 允许 Null 值 num text □ name nchar(10) □ sex nchar(10) □ grade int □ professional nchar(10) □ face nchar(10) □ course: 列名 数据类型 允许 Null 值 cnum text □ cname nchar(10) □ time int □ credit int □ nature nchar(10) □ term int □ grade: 列名 数据类型 允许 Null 值 num text □ cnum text □ chengji float □ 2)设计中使用了几个类,各自的功能是什么?画出各类之间的 UML 图。
实验报告
1)建立的数据库应该包含三张表、档案表、课程表和成绩表,各表中的字段自行定义。 2)数据录入应针对三张表各自设计一个界面进行数据的录入,并提供必要的按钮进行保存、重置和 退出录入等。 3)数据修改应针对三张表中已经录入的数据进行部分或全部进行修改,可以按指定的某学生或课程 进行学生档案或成绩或课程信息修改 4)查询:应提花多种选择,对多表进行查询,如查看学生成绩信息,可以考虑输出的内容为:学号、 姓名、课程名称、成绩。 5)统计:尽可能地提供各种统计功能。 6)显示功能中,尽可能使用表格组件或 Jlist 组件或其他组件展现出要显示的内容 以上内容大家可发挥自己的设计理念,尽量做到简便易用、界面美观等。 要求:1)数据库必须使用 SQL 或 oracle; 2)集中指导 4 学时;课后学时 20 学时。

JAVA聊天室实验报告 网络编程技术实验报告

JAVA聊天室实验报告 网络编程技术实验报告

网络编程技术大作业
1.3 参考文档
版本:0.1.0 第 5页
序号 1 2 3
文档名 《Java 大学实用教程》 《TCP/IP 网络编程技术基础》 《Java 一对一网络编程》
012.6.14 2012.6.14
版本 第二版 第一版
4 系统设计说明...................................................................................................................................................... 8 4.1 模块整体结构图...................................................................................................................................... 8 4.2 使用说明书.............................................................................................................................................. 8
适用范围:聊天程序使用者,功能相似的程序开发人员,以及其他需要了解本系统工作 原理的人员。
1.2 术语/缩略语
序号 1 2 3
4
5 6 7 8 9 10 11 12 13
术语/缩略语 API Socket Frame Java Application 目标 IP 端口
Listener Client Sever Flag InputStream OutputStream Awt.event

JAVA网络编程实验

JAVA网络编程实验

实验二Java编程基础(二)姓名_石心刚_______学号_110342124____________实验日期2013年10月24日实验报告日期年月日成绩___________________一.实验目的1、理解并掌握Java中接口的基本概念和具体应用2、熟悉掌握Java中线程的定义和基本操作3、理解线程池的概念,以及常用的线程调度方法二.实验环境1、准备SUN的JDK6安装文件2、Java程序开发软件一套——MyEclipse6.03按照下面所给实验步骤完成各项内容,将实际的操作过程记录在实验报告中,报告中的配置参数应给出实际的值,必要的执行结果需要提供成功运行或配置的界面三.实验实际完成内容及结果分析1、在下面程序中的适当位置添加计算程序运行时间的语句:String result;long begin=System.currentTimeMillis();//程序执行可以先执行该语句long end=System.currentTimeMillis();//程序结束前可以先执行该语句result=(end-begin)+"ms";//计算连接所花的时间)编辑并调试程序,给出程序的功能说明,以及关键代码注释,并给出至少三组执行结果。

源程序代码:分别使用D盘中三个不同文件夹中的文件进行消息摘要计算,计算结果如图所示。

2、请编辑和调试以下多线程程序,请将程序的执行情况填写在实验报告中,并回答以下问题:1)本程序中是采用的哪种定义线程的方法?2)程序中时如何实现用户接口程序和计算摘要的线程类之间的消息传递?3)最后修改程序,分别计算程序中每个线程的执行时间,以及主控线程的运行时间,并提供同样的实验数据,与实验步骤1中程序的执行时间进行比较,说明多线程设计的特点。

程序代码://CallbackDigest.java//CallbackDigestUserInterface.java程序执行结果:(1)本题通过继承扩展Thread类创建线程;(2)首先定义一个类继承Thread父类,在run()方法加入任务,最后调用start方法线程启动;(3)修改后的程序代码:执行结果:分析:多线程的设计优点:当频繁执行IO操作时,多线程比单线程效率高,平均执行时间减少。

JAVA网络编程

JAVA网络编程

南昌航空大学实验报告二00八年十二月二十八日课程名称:Java网络编程实验名称:Internet寻址班级:06201535 姓名:杨超同组人:指导教师评定:签名:实验三、Internet寻址一、实验目的1.熟悉网络编程的基本过程2.掌握网络程序的基本调试方法3.学习InetAddress类的应用4.理解Internet寻址的基本概念二、实验内容1.输入、调试、运行一个简单的网络例程,熟悉网络编程的过程。

2.利用InetAddress类编写一个能够获取本机地址的Java程序。

3.利用InetAddress类编写一个既能把域名解析为地址的程序,又能把地址解析为域名的Java程序。

三、实验步骤1.在Eclipse中输入以下两个程序:import java.io.*;import .*;public class SimpleServer {public static void main(String[] args) {try {ServerSocket ss=new ServerSocket(2007);Socket s=ss.accept();Reader in=new InputStreamReader(s.getInputStream());int c;while((c=in.read())!=-1){ System.out.write(c);}} catch (IOException e) {e.printStackTrace();}}}import .*;import java.io.*;public class SimpleClient {public static void main(String[] args) {try {Socket s=new Socket("localhost",2007);Writer out=new OutputStreamWriter(s.getOutputStream());out.write("Hello,Java network programming!!!\n");out.close();} catch (UnknownHostException e) {e.printStackTrace(); }catch (IOException e) {e.printStackTrace();}}}2.按照先运行SimpleServer后运行SimpleClient的次序运行这两个程序,察看结果。

Java网络编程实验报告

Java网络编程实验报告

Java课后作业(班级)指导老师:提交日期:以下为指导教师的评语及评分:课后作业(班级)指导老师:一、实验题目Java网络编程二、实验内容代码:import java.io.*;import .*;import java.util.*;public class Server {public static void main(String args[]){ServerSocket server=null;ServerThread thread;Socket you=null;while(true){try{server=new ServerSocket(2010);}catch(IOException el){System.out.println("正在监听");}try{System.out.println("等待客户呼叫");you=server.accept();System.out.println("客户的地址:"+you.getInetAddress());}catch(IOException e){System.out.println("正在等待客户");}if(you!=null){new ServerThread(you).start();}}}}class ServerThread extends Thread{Socket socket;DataOutputStream out=null;DataInputStream in=null;String s=null;ServerThread(Socket t){socket=t;try{out=new DataOutputStream(socket.getOutputStream());in=new DataInputStream(socket.getInputStream());}catch(IOException e){}}public void run(){while(true){try{double a=in.readDouble();double b=in.readDouble();double c=in.readDouble();if(a+b<=c||a+c<=b||b+c<=a){double area=-1;out.writeDouble(area);}else{double p=(a+b+c)/2;double A=(p*(p-a)*(p-b)*(p-c));double area=Math.sqrt(A);out.writeDouble(area);}}catch(IOException e){System.out.println("客户离开");return;}}}private double sqrt(double q) {return 0;}}import java.io.*;public class Read implements Runnable {DataInputStream in;public void setDataInputStream(DataInputStream in){ this.in=in;}public void run(){double result=0;while(true){try{result=in.readDouble();if(result<0){System.out.println("你输入的三条边长不能组成三角形");System.out.println("重新输入三角形的三条边长(放弃请输入N):");}else{System.out.println("三角形的面积为:"+result);System.out.println("输入三角形的三条边长(放弃请输入N):");}}catch(IOException e){System.out.println("与服务器已断开"+e);break;}}}}import java.io.*;import .*;import java.util.*;public class client {public static void main(String args[]){Scanner scanner=new Scanner(System.in);Socket mysocket=null;DataInputStream in=null;DataOutputStream out=null;Thread readData;Read read=null;try{mysocket=new Socket();read=new Read();readData = new Thread(read);System.out.print("请输入服务器的IP地址:");String IP=scanner.nextLine();System.out.print("请输入端口号:");int port=scanner.nextInt();if(mysocket.isConnected()){}else{InetAddress address=InetAddress.getByName(IP);InetSocketAddress socketAddress=new InetSocketAddress(address,port);mysocket.connect(socketAddress);in=new DataInputStream(mysocket.getInputStream());out=new DataOutputStream(mysocket.getOutputStream());read.setDataInputStream(in);readData.start();}}catch(Exception e){System.out.print("服务器已经断开"+e);}System.out.println("请输入三角形的三条边长(放弃请输入N):");while(scanner.hasNext()){double a=0;double b=0;double c=0;try{a=scanner.nextDouble();b=scanner.nextDouble();c=scanner.nextDouble();}catch(InputMismatchException exp){System.exit(0);}try{out.writeDouble(a);out.writeDouble(b);out.writeDouble(c);}catch(Exception e){}}}}运行结果:(范文素材和资料部分来自网络,供参考。

java实验报告实验报告java实验报告Java

java实验报告实验报告java实验报告Java

java实验报告实验报告java实验报告Java一、实验目的本次实验的目的是熟悉Java语言,了解Java程序结构,掌握Java程序的开发流程,加深对Java语言特性的认识和理解。

二、实验内容本次实验内容为设计一个简单的Java程序,包括设计程序的需求分析、设计方案、编写代码、测试运行结果等环节。

三、实验分析3.1 需求分析设计一个Java程序,要求该程序能够实现以下功能:1. 用户可以输入两个数,程序可以对这两个数进行加、减、乘、除的操作,并输出运算结果。

2. 用户可以输入一个字符串,程序可以对该字符串进行反转输出。

3.2 设计方案根据需求分析,我们可以先设计一个简单的界面,包括输入框、选择运算符号的下拉框,以及一个按钮,当用户输入完毕后点击按钮即可进行相应的操作。

3.3 编写代码根据设计方案,我们先编写一个简单的界面代码:import java.awt.*;import javax.swing.*;public class Calculator extends JFrame {private JTextField text1, text2, text3;private JComboBox<String> combo;private JButton calcBtn, reverseBtn, factBtn;public Calculator() {super("Calculator");text1 = new JTextField(5);text2 = new JTextField(5);text3 = new JTextField(10);combo = new JComboBox<String>(new String[]{"+", "-", "*", "/"});calcBtn = new JButton("Calculate");reverseBtn = new JButton("Reverse");factBtn = new JButton("Factorial");JPanel panel2 = new JPanel();panel2.add(new JLabel("String:"));panel2.add(text3);panel2.add(reverseBtn);pack();setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}该界面中包含了3个面板,一个用于加减乘除,一个用于字符串反转,一个用于阶乘操作。

java实验报告

java实验报告

Java程序设计实验报告学号:名字:实验一 JAVA开发环境及基本语法一、实验目的:1、掌握常用的Java集成开发环境的使用,特别是Eclipse和NetBeans。

2、掌握Java基本语法,重点是面向对象的思想和语法。

3、掌握控制台下(应用程序)的输入输出方法,作为后续部分实验的基础。

二、实验内容:1、打开实验室计算机上的集成开发环境Eclipse或NetBeans(重点是Eclipse),掌握其基本使用方法。

了解开发软件的各个菜单功能。

会创建java项目(Project),会编辑和编译、运行项目代码。

2、验证和学习所给的几个例子程序及其讲解。

然后自己编写一个至少由一个类构成的Java程序,其功能是在运行后,能接收用户输入一个学生的姓名以及java课的成绩(百分制),并输出对该学生成绩是否达到60分的及格分的判断(可使用if语句)。

例如,输入学生姓名李明,然后输入成绩50,则输出“李明的成绩为不及格”。

3、编写一个程序来表示长方体的长宽高等数据并有计算体积的函数可供调用,长方体类从矩形类继承而来。

程序运行时能接受输入任意的3 个数作为长方体的长、宽和高,然后能够输出所输入的长宽高及所计算出的体积。

注意不能把代码全部写在main函数里面,不能直接输出长宽高的乘积。

三、设计过程预习实验指导书上的内容,并将实验指导书上的例子用Eclipse验证,分析例子的指导思想,然后根据例子的内容用java语言写出自己的程序。

实验中需要学会利用控制台输出信息,使用语句“System.out.println("**************"); ”即可。

而在控制台下接受用户输入数据的方法为:Scanner sc = new Scanner(System.in); // 定义一个Scanner对象,从System.in接受输入;str = sc.next(); // 等待用户输入任意一个字符串,它会被存到str中;在实验中还会使用if语句,这跟C++的用法差不多。

网络编程实验报告

网络编程实验报告

网络编程技术实验报告一实验目的:网络编程技术是计算机科学与技术专业、网络工程专业、软件工程专业的一门专业基础课程。

本课程以Java技术为主讲授,Java语言是当前最流行的网络编程语言。

本课程是一门实用性和综合运用性都很强的课程,实践教学环节是教学过程中必不可少的重要内容。

通过实验,让学生熟悉JDK中的主要内容,掌握用JDK调试和运行程序的方法,掌握网络编程的基本思想和开发方法、面向对象编程的思想,JA V A中的基本方法和技术,能够熟练使用JA V A设计、编写程序,特别是基于TCP/IP的Socket 编程,并能运用这些知识方法完成C/S和B/S结构程序的设计工作。

通过实验,提高学生使用Java语言程序设计开发的能力,提高应用面向对象技术分析和解决实际问题的能力,并在此基础上强化学生的实践意识、提高其分析问题、解决问题的能力以及动手能力和创新能力。

二实验要求要求学生熟悉JDK中的主要内容,掌握用JDK调试和运行程序的方法,掌握网络编程的基本思想和开发方法、面向对象编程的思想,JAVA中的基本方法和技术,能够熟练使用JAVA设计、编写程序,特别是基于TCP/IP的Socket编程,并能运用这些知识方法完成C/S和B/S结构程序的设计工作。

要注意培养学生良好的编程习惯,自始至终贯彻课程中所介绍的程序设计风格。

为保证尽量在统一安排的上机时间内完成程序设计任务,学生应事先做问题分析,并做静态检查。

学生应记录实验中所遇到的问题,并写出详细的实验报告。

课前准备上机程序,上机认真调试,课后撰写实验报告,实验报告包括实验目的、实验内容、源程序、实验结果及分析。

实验一java基本语法实验目的:了解Java的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握Java基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。

实验要求:1、编写一个声明Java不同数据类型变量的程序。

2、编写使用不同选择结构的程序。

java网络编程实验报告

java网络编程实验报告

java网络编程实验报告《Java网络编程实验报告》摘要:本实验报告主要介绍了Java网络编程的基本原理和实践操作。

通过实验,我们学习了如何使用Java编程语言进行网络编程,并实现了基本的客户端和服务器端通信。

我们探讨了Socket编程、TCP和UDP协议以及网络通信中的异常处理等内容。

通过本次实验,我们对Java网络编程有了更深入的理解,并且掌握了一些实用的技巧和方法。

关键词:Java网络编程、Socket编程、TCP协议、UDP协议、异常处理一、引言随着互联网的普及和发展,网络编程成为了程序员必备的技能之一。

Java作为一种跨平台的编程语言,具有良好的网络编程支持,因此受到了广泛的应用。

本次实验将通过实践操作,深入探讨Java网络编程的相关知识,为学习者提供一个全面的了解和实践的机会。

二、实验目的1. 了解Java网络编程的基本原理2. 掌握Socket编程的基本操作3. 理解TCP和UDP协议的区别与应用4. 学习网络通信中的异常处理方法三、实验内容1. Socket编程Socket是网络编程中的基本概念,它是实现网络通信的一种方式。

在本次实验中,我们首先学习了Socket的基本原理和使用方法。

通过创建Socket对象,我们可以建立客户端和服务器端之间的通信连接,实现数据的传输和交换。

2. TCP和UDP协议TCP和UDP是网络通信中常用的两种协议,它们分别具有不同的特点和适用场景。

在实验中,我们分别实现了基于TCP和UDP的客户端和服务器端通信。

通过比较两种协议的优缺点,我们可以更好地选择合适的协议来满足实际的需求。

3. 异常处理在网络通信中,由于各种原因可能会出现各种异常情况,如网络连接中断、数据传输错误等。

为了保证程序的稳定性和可靠性,我们需要对这些异常情况进行处理。

在本次实验中,我们学习了如何通过异常处理机制来处理网络通信中可能出现的异常情况,保证程序的正常运行。

四、实验结果通过本次实验,我们成功实现了基于Java的客户端和服务器端通信,并且掌握了Socket编程、TCP和UDP协议以及网络通信中的异常处理方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院
《Java语言程序设计》实验报告
学院: 班级: 姓名: 学号: 成绩:
一、实习目标
1.掌握Socket通信
2.掌握UDP数据报通信
3.掌握多线程网络编程
二、实验过程
任务一:掌握Socket类的使用
代码截图:
Sever类:
Client类:
实验报告的内容与格式按任课教师的要求书写。

S1:将ServerSocket对象实例化,指定服务器端口。

S2:实例化一个socket对象,accept()方法阻塞进程,等待用户端接入
S3:打印服务器端套接字连接的远程IP地址
S4:打印服务器端套接字连接的远程端口
S5:打印服务器套接字本地的IP
S6:打印服务器套接字本地的端口
C1:实例化socket对象
C2:将inetSocketAddress类型的isa对象包含的服务器IP及端口用connect()方法传入socket类中,连接服务器
C3:打印客户端套接字连接的远程IP
C4:打印客户端套接字连接的远程端口
C5:打印客户端套接字本地的IP
C6:打印客户端套接字本地的端口
运行结果:
任务二: 使用TCP协议实现文件传送
代码截图:
Server类:
Client类:
运行结果:
任务三:现有一个Triangle(三角形)类:
思考题:为什么Triangle需要实现Serializable接口?
答:一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。

因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。

而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。

代码截图:
TCPServer类:
TCPClient类:
Triangle类:
TriangleFrame类:
运行结果:
任务四:使用UDP数据报传输数据代码截图:
Aside类:
Bside类:
运行结果:。

相关文档
最新文档