Java第一篇

xiaoxiao2021-02-28  142

一、知识点小节   @author MrSun   1、安装JDK一般不需要设置环境变量classpath = "D:\jdk1.8\jre\lib\rt.jar;.;"   2、基本数据类型从低到高:byte  short  char  int  long  float  double   3、(dog  instanceof  animal.class)判断左边的对象是否是右边的类或子类创建的对象;   4、UML:三层(1层、常规字体,表示具体类的名字;斜体表示抽象类的名字;2层、成员变量;3层、类中方法的名字)   5、子类不继承父类的构造方法,可以用super()调用父类的构造方法;   6、如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法   7、接口中的只有常量(默认public static final修饰),只能有抽象方法;   8、abstract类和接口的比较:      (1)abstract类和接口都可以有abstrat方法;      (2)abstract类中既可以有常量也可以有变量,接口中只能有常量;      (3)abstract类中也可以有非abstract方法,接口中只能有abstract方法;   9、接口回调,指把实现某一接口的实例对象(实现这个接口的类创建的对象)赋值给接口声明的变量,用这个变量调用实例对象(实现这个接口的类创建的对象)中实现接口中的方法;  10、进程是操作系统中一个小单元,线程是进程中的一个小单元;(线程之间1、新建;2、运行;3、中断;和4、死亡的顺序);

 11、地址的表示1、域名(www.baidu.com);2、IP地址(202.108.35.210);

Java程序设计实用教程(源码以及电子教案:www.ptpedu.com.cn)

二、用UDP实现张三和李四对话的例子

张三的代码:

import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class ZhangSan {     public static void main(String args[]) {           Scanner scanner = new Scanner(System.in);           Thread readData ;           ReceiveLetterForZhang receiver = new ReceiveLetterForZhang();           try{ readData = new Thread(receiver);                 readData.start();           //负责接收信息的线程                 byte [] buffer=new byte[1];                 InetAddress address=InetAddress.getByName("127.0.0.1");                 DatagramPacket dataPack=                 new DatagramPacket(buffer,buffer.length, address,666);                 DatagramSocket postman=new DatagramSocket();                 System.out.print("输入发送给李四的信息:");                 while(scanner.hasNext()) {                     String mess = scanner.nextLine();                     buffer=mess.getBytes();                     if(mess.length()==0)                         System.exit(0);                     buffer=mess.getBytes();                     dataPack.setData(buffer);                     postman.send(dataPack);                       System.out.print("继续输入发送给李四的信息:");                 }            }            catch(Exception e) {                 System.out.println(e);            }        } }

import java.net.DatagramPacket; import java.net.DatagramSocket; public class ReceiveLetterForZhang implements Runnable{     public void run() {           DatagramPacket pack=null;           DatagramSocket postman=null;           byte data[]=new byte[8192];           try{  pack=new DatagramPacket(data,data.length);                 postman = new DatagramSocket(888);           }           catch(Exception e){}           while(true) {               if(postman==null) break;             else               try{ postman.receive(pack);                    String message=new String(pack.getData(),0,pack.getLength());                    System.out.printf("%s\n","收到:"+message);               }               catch(Exception e){}           }        } }

李四的代码:

import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class LiSi {      public static void main(String args[]) {           Scanner scanner = new Scanner(System.in);           Thread readData ;           ReceiveLetterForLi receiver = new ReceiveLetterForLi();           try{  readData = new Thread(receiver);                 readData.start();           //负责接收信息的线程                 byte [] buffer=new byte[1];                 InetAddress address=InetAddress.getByName("127.0.0.1");                 DatagramPacket dataPack=                 new DatagramPacket(buffer,buffer.length, address,888);                 DatagramSocket postman=new DatagramSocket();                 System.out.print("输入发送给张三的信息:");                 while(scanner.hasNext()) {                     String mess = scanner.nextLine();                     buffer=mess.getBytes();                     if(mess.length()==0)                         System.exit(0);                     buffer=mess.getBytes();                     dataPack.setData(buffer);                     postman.send(dataPack);                       System.out.print("继续输入发送给张三的信息:");                 }            }            catch(Exception e) {                 System.out.println(e);            }        } }

import java.net.DatagramPacket; import java.net.DatagramSocket; public class ReceiveLetterForLi implements Runnable {     public void run() {           DatagramPacket pack=null;           DatagramSocket postman=null;           byte data[]=new byte[8192];           try{  pack=new DatagramPacket(data,data.length);                 postman = new DatagramSocket(666);           }           catch(Exception e){}           while(true) {               if(postman==null) break;             else               try{ postman.receive(pack);                    String message=new String(pack.getData(),0,pack.getLength());                    System.out.printf("%s\n","收到:"+message);               }               catch(Exception e){}           }        } }

三、用Socket实现客户端和服务器之间交互(计算圆的面积)

客户端代码:

import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.util.InputMismatchException; import java.util.Scanner; 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.println("服务器已断开"+e);            }            System.out.print("输入园的半径(放弃请输入N):");            while(scanner.hasNext()) {                double radius=0;                try {                    radius = scanner.nextDouble();                }                catch(InputMismatchException exp){                   System.exit(0);                }                   try {                    out.writeDouble(radius);                }                catch(Exception e) {}            }        } }

中间线程代码Read类:

import java.io.DataInputStream; import java.io.IOException; 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();                  System.out.println("圆的面积:"+result);                  System.out.print("输入园的半径(放弃请输入N):");             }             catch(IOException e) {                  System.out.println("与服务器已断开"+e);                  break;             }              }        } }

服务端代码:

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; 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 e1) {                   System.out.println("正在监听"); //ServerSocket对象不能重复创建             }             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 r=in.readDouble();//堵塞状态,除非读取到信息                    double area=Math.PI*r*r;                    out.writeDouble(area);              }              catch (IOException e) {                    System.out.println("客户离开");                     return;              }           }     }

}

转载请注明原文地址: https://www.6miu.com/read-29926.html

最新回复(0)