• Java基础9


    Java基础9    1

    文件结构    1

    Java网络编程_netTest1Client/com.test1/MyClient1.java    1

    Java网络编程_netTest1Client/com.test1/MyServer1.java    3

    Java网络编程_netTest2Client/com.test1/MyClient2.java    4

    Java网络编程_netTest2Client/com.test1/ MyServer2.java    5

    Java网络编程_netTest3Client/com.test1/MyClient3.java    7

    Java网络编程_netTest3Client/com.test1/ MyServer3.java    9

    Java网络编程_netTestClient/com.test1/MyServer.java    11

    Java网络编程_netTestClient/com.common/User.java    12

    Java网络编程_netTestClient/com.test1/MyClient.java    12

    Java网络编程_netTestClient/com.common/User.java    13

    文件结构

    Java网络编程_netTest1Client/com.test1/MyClient1.java

    /**

    * 这是一个客户端程序,可以连接服务器端

    */

    package com.test1;

    import java.io.*;

    import java.net.*;

    public class MyClient1 {

        /**

         * @param args

         */

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            MyClient1 mc1=new MyClient1();

        }

        

        public MyClient1()

        {

            try {

                //Socket()就是去连接某个服务器端,127.0.0.1表示服务器的IP

                //9999就是端口号

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

                //如果s连接成功,就可以发送数据给服务器

                //通过pw,s写数据,true表示即时刷新

                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);

                pw.println("你好吗?我是客户端");

                

                //客户端接收

                InputStreamReader isr=new InputStreamReader(s.getInputStream());

                BufferedReader br=new BufferedReader(isr);

                

                String response=br.readLine();

                

                System.out.println("我是客户端!\n我收到了服务器回复的信息:"+response);

                

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    Java网络编程_netTest1Client/com.test1/MyServer1.java

    /**

    * 这是第一个服务器端程序,让它在9999端口监听

    * 可以接收从客户端发来的信息

    */

    package com.test1;

    import java.io.*;

    import java.net.*;

    public class MyServer1 {

        

        public static void main(String []args)

        {

            MyServer1 ms1=new MyServer1();

        }

        

        public MyServer1()

        {

            try {

                //9999号端口监听

                ServerSocket ss=new ServerSocket(9999);

                System.out.println("我是服务器,在9999端口监听...");

                //等待某个客户端来连接,该函数会返回一个Scoket连接

                Socket s=ss.accept();

                System.out.println("有客户端连接");

                

                //要读取取s中传递的数据

                InputStreamReader isr=new InputStreamReader(s.getInputStream());

                BufferedReader br=new BufferedReader(isr);

                

                String info=br.readLine(); //

                

                System.out.println("服务器接收到:"+info);

                

                //服务器回复一句话

                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//true表示即时刷新

                pw.println("我是服务器,客户端你也好!");

                

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    Java网络编程_netTest2Client/com.test1/MyClient2.java

    /**

    * 半双工通信

    * 功能:客户端

    */

    package com.test1;

    import java.net.*;

    import java.io.*;

    public class MyClient2 {

        /**

         * @param args

         */

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            MyClient2 mc2=new MyClient2();

        }

        public MyClient2()

        {

            try {

                //连接服务器端

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

                //s写入数据

                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);

                

                //先接收从控制台输入的信息

                InputStreamReader isr=new InputStreamReader(System.in);

                BufferedReader br=new BufferedReader(isr);

                

                //接收从服务器端发送过来的信息

                InputStreamReader isr2=new InputStreamReader(s.getInputStream());

                BufferedReader br2=new BufferedReader(isr2);

                

                while(true)

                {

                    System.out.println("请输入你想对服务器说的话:");

                    //客户端先从控制台接收

                    String info=br.readLine();

                    

                    //然后把从控制台输入的信息发送给服务器

                    pw.println(info);

                    if(info.equals("bye"))

                    {

                        System.out.println("对话结束");

                        s.close();

                        break;

                    }

                    //接收从服务器发来的话

                    String res=br2.readLine();

                    System.out.println("服务器说:"+res);

                }

                

            } catch (IOException e) {

                e.printStackTrace();

            }

            

        }

    }

    Java网络编程_netTest2Client/com.test1/ MyServer2.java

    /**

    * 半双工通信

    * 功能:一个服务器端,在9999端口上监听

    */

    package com.test1;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.PrintWriter;

    import java.net.*;

    import java.io.*;

    public class MyServer2 {

        /**

         * @param args

         */

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            MyServer2 ms2=new MyServer2();

        }

        

        public MyServer2()

        {

            try {

                //9999端口监听

                ServerSocket ss=new ServerSocket(9999);

                System.out.println("服务器在9999监听...");

                //等待连接

                Socket s=ss.accept();

                

                //s中写信息

                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);

                

                //先接收客户端发来的信息(Socket上的)

                InputStreamReader isr=new InputStreamReader(s.getInputStream());

                BufferedReader br=new BufferedReader(isr);

                

                //接收从控制台输入的信息

                InputStreamReader isr2=new InputStreamReader(System.in);

                BufferedReader br2=new BufferedReader(isr2);

                

                while(true)

                {

                    String infoFromClient=br.readLine();

                    System.out.println("客户端发来:"+infoFromClient);

                    if(infoFromClient.equals("bye"))

                    {

                        System.out.println("对话结束!");

                        s.close();

                        break;

                    }

                    

                    //接收从控制台输入的信息

                    System.out.println("输入你希望对客户端说的话:");

                    String response=br2.readLine();

                    //把从控制台接受的信息送给客户端

                    pw.println(response);

                }

                

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    Java网络编程_netTest3Client/com.test1/MyClient3.java

    /**

    * 全双工通信

    * 客户

    */

    package com.test1;

    import javax.swing.*;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.io.*;

    import java.net.*;

    public class MyClient3 extends JFrame implements ActionListener{

        JTextArea jta=null;

        JTextField jtf=null;

        JButton jb=null;

        JScrollPane jsp=null;

        JPanel jp1=null;

        

        //把信息发给客户端的对象

        PrintWriter pw=null;

        

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            MyClient3 ms=new MyClient3();

        }

        

        public MyClient3()

        {

            jta=new JTextArea();

            jsp=new JScrollPane(jta);

            jtf=new JTextField(10);

            jb=new JButton("发送");

            jb.addActionListener(this);

            

            jp1=new JPanel();

            jp1.add(jtf);

            jp1.add(jb);

            this.add(jsp,"Center");

            this.add(jp1,"South");

            this.setSize(300,200);

            this.setTitle("QQ简易聊天-客户端");

            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            this.setVisible(true);

            

            try {

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

                

                InputStreamReader isr=new InputStreamReader(s.getInputStream());

                BufferedReader br=new BufferedReader(isr);

                

                pw=new PrintWriter(s.getOutputStream(),true);

                while(true)

                {

                    //不停的读取从服务器发来的信息

                    String info=br.readLine();

                    jta.append("服务器端对客户端说: "+info+"\r\n");

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

            

        }

        @Override

        public void actionPerformed(ActionEvent e) {

            //如果用户按下发送信息的按钮

            if(e.getSource()==jb)

            {

                //把服务器在jtf写的内容发送给客户端

                String info=jtf.getText();

                //把客户端显示的信息加到jta

                jta.append("客户端对服务器说: "+info+"\r\n");

                pw.println(info);

                //清空jtf中的内容

                jtf.setText("");

            }

        }

    }

    Java网络编程_netTest3Client/com.test1/ MyServer3.java

    /**

    * 全双工通信

    * 服务器端

    */

    package com.test1;

    import javax.swing.*;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.io.*;

    import java.net.*;

    public class MyServer3 extends JFrame implements ActionListener{

        JTextArea jta=null;

        JTextField jtf=null;

        JButton jb=null;

        JScrollPane jsp=null;

        JPanel jp1=null;

        

        //把信息发给客户端的对象

        PrintWriter pw=null;

        

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            MyServer3 ms=new MyServer3();

        }

        

        public MyServer3()

        {

            jta=new JTextArea();

            jsp=new JScrollPane(jta);

            jtf=new JTextField(10);

            jb=new JButton("发送");

            jb.addActionListener(this);

            

            jp1=new JPanel();

            jp1.add(jtf);

            jp1.add(jb);

            this.add(jsp,"Center");

            this.add(jp1,"South");

            this.setSize(300,200);

            this.setTitle("QQ简易聊天-服务器端");

            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            this.setVisible(true);

            

            try {

                //服务器监听

                ServerSocket ss=new ServerSocket(9988);

                //等待客户端连接

                Socket s=ss.accept();

                //System.out.println("服务器端在9988监听!");

                

                InputStreamReader isr=new InputStreamReader(s.getInputStream());

                BufferedReader br=new BufferedReader(isr);

                

                pw=new PrintWriter(s.getOutputStream(),true);

                

                //读取从客户端发来的信息

                while(true)

                {

                    //读取从客户端发来的信息

                    String info=br.readLine();

                    //把信息显示加到文本域中(以追加的形式)

                    jta.append("客户端对服务器说: "+info+"\r\n");

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        @Override

        public void actionPerformed(ActionEvent e) {

            //如果用户按下发送信息的按钮

            if(e.getSource()==jb)

            {

                //把服务器在jtf写的内容发送给客户端

                String info=jtf.getText();

                jta.append("服务器端对客户端说: "+info+"\r\n");

                pw.println(info);

                //清空jtf中的内容

                jtf.setText("");

            }

        }

    }

    Java网络编程_netTestClient/com.test1/MyServer.java

    /**

    * 功能:网络这间利用 对象流

    */

    package com.test1;

    import java.net.*;

    import java.io.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import com.common.*;

    public class MyServer {

        /**

         * @param args

         */

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            MyServer ms=new MyServer();

        }

        public MyServer()

        {

            try {

                ServerSocket ss=new ServerSocket(3456);

                System.out.println("服务器在3456端口监听...");

                Socket s=ss.accept();

                //以对象流方式读取(假设客户端发送的是User的一个对象)

                ObjectInputStream ois=new ObjectInputStream(s.getInputStream());

                User u=(User)ois.readObject();//读取对象

                

                //输出

                System.out.println("从客户端接收到:"+u.getName()+" "+u.getPass());

                s.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

            

        }

    }

    Java网络编程_netTestClient/com.common/User.java

    package com.common;

    public class User implements java.io.Serializable{

        //将这个类实现序列化

        private String name;

        private String pass;

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public String getPass() {

            return pass;

        }

        public void setPass(String pass) {

            this.pass = pass;

        }

        

    }

    Java网络编程_netTestClient/com.test1/MyClient.java

    package com.test1;

    import java.io.*;

    import java.net.*;

    import com.common.User;

    import com.test1.*;

    public class MyClient {

        /**

         * @param args

         */

        public static void main(String[] args) {

            //

            MyClient mc=new MyClient();

        }

        public MyClient()

        {

            try {

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

                //通过ObjectOutputStream给服务器传送对象

                ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());

                User u=new User();

                u.setName("维唯为为");

                u.setPass("123456");

                oos.writeObject(u); //写入对象流

                //如果希望一个对象在网络上传输,则需要把这个对象序列化

                //System.out.println("ok");

                s.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

            

        }

    }

    Java网络编程_netTestClient/com.common/User.java

    package com.common;

    public class User implements java.io.Serializable{

        //将这个类实现序列化

        private String name;

        private String pass;

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public String getPass() {

            return pass;

        }

        public void setPass(String pass) {

            this.pass = pass;

        }

        

    }

  • 相关阅读:
    目标检测
    模型压缩-L1-norm based channel pruning(Pruning Filters for Efficient ConvNets)
    ubuntu docker 环境安装
    姿态估计的数据集说明
    详解Pytorch中的网络构造,模型save和load,.pth权重文件解析
    MSE, MAE, Huber loss详解
    maskrcnn_benchmark 理解
    模型压缩-Learning Efficient Convolutional Networks through Network Slimming
    Focal Loss
    Github桌面版使用教程
  • 原文地址:https://www.cnblogs.com/luowei010101/p/2138350.html
Copyright © 2020-2023  润新知