简介 目录 评价 推荐
  • 都是已存在 2022-03-21

    限于个人能力,没有能实现服务器端的多线程。

    注册、登录、上传文件到数据库的功能基本都实现了。

    源代码:

    https://pan.baidu.com/s/1TahTLXp2STzADhuehOMX5Q?pwd=13e5 

    0赞 · 0采集
  • 都是已存在 2022-03-11

    基于UDP的Socket通信实现多线程:

    /**
    *服务器端
    */
    package com.imooc.UDPTest;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class Server {
        public static void main(String[] args) throws IOException {
            //创建服务器端DatagramSocket,指定端口
            DatagramSocket socket=new DatagramSocket(8800);
            byte[] data=new byte[1024];
            DatagramPacket packet=new DatagramPacket(data,data.length);
            System.out.println("服务器端已经启动,等待客户端发送数据");
            int count=0;
            while (true){
                socket.receive(packet);//此方法在接收到数据包之前会一直堵塞
                Thread serverThread=new ServerThread(socket,packet,data);
                serverThread.start();
                InetAddress address=packet.getAddress();
                System.out.println("当前客户端IP:"+address.getHostAddress());
                count++;
                System.out.println("当前客户端数量:"+count);
            }
    
        }
    }
    /**
    *服务器线程处理类
    */
    package com.imooc.UDPTest;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    
    public class ServerThread extends Thread{
        DatagramSocket socket=null;
        DatagramPacket packet=null;
        byte[] data=null;
        public ServerThread(DatagramSocket socket,DatagramPacket packet,byte[] data){
            this.socket=socket;
            this.packet=packet;
            this.data=data;
        }
        public void run() {
            String info=new String(data,0,packet.getLength());
            System.out.println("我是服务器,客户端说:"+info);
            InetAddress address=packet.getAddress();
            int port=packet.getPort();
            data="欢迎您".getBytes();
            packet=new DatagramPacket(data,data.length,address,port);
            try {
                socket.send(packet);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
        }
    
    }
    /**
    *客户端
    */
    package com.imooc.UDPTest;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class Client {
        public static void main(String[] args) throws IOException {
            //定义服务器的地址、端口号、数据
            InetAddress address=InetAddress.getByName("DESKTOP-M8K8E0E");
            int port=8800;
            byte[] data="用户名:admin;密码:123".getBytes();
            //创建数据报,包含发送的数据信息
            DatagramPacket packet=new DatagramPacket(data,data.length,address,port);
            //创建DatagramSocket对象
            DatagramSocket socket=new DatagramSocket();
            socket.send(packet);
    
            byte[] data1=new byte[1024];
            DatagramPacket packet1=new DatagramPacket(data1,data1.length);
            socket.receive(packet1);
            String info=new String(data1,0,packet1.getLength());
            System.out.println("我是客户端,服务器说:"+info);
            socket.close();
    
        }
    }
    0赞 · 0采集
  • 策马奔腾雄霸天下 2022-01-11
    不错,项目思路清晰
    0赞 · 0采集
  • guaguaerhao 2021-12-12

     对象

    0赞 · 0采集
  • guaguaerhao 2021-12-12

     

    传输对象

    0赞 · 0采集
  • guaguaerhao 2021-12-12

    传递

    0赞 · 0采集
  • guaguaerhao 2021-12-12

    传递文件

    0赞 · 0采集
  • weixin_慕桂英2549458 2021-11-04

    http://img2.mukewang.com/61834e38000163be08120429.jpg四大类

    0赞 · 0采集
  • weixin_慕桂英2549458 2021-11-04

    http://img.mukewang.com/61834dd60001f3c413150705.jpgip地址和端口号组成了scoket

    0赞 · 0采集
  • weixin_慕桂英2549458 2021-11-04

    http://img2.mukewang.com/61834cdb00013a5007020487.jpghttp超文件传输协议

    0赞 · 0采集
  • weixin_慕莱坞9049976 2021-10-21

    两台计算机要想能够进行 通信,需要满足一些必要的条件

    1. 唯一的标识:ip;用来标识自己的身份以及自己所处的地址

    2. 需要共同的语言;即协议

    3. 相应的端口号:每个主机上可以运行多个应用程序,使用端口号来决定与哪个应用进行通信

    TCP/IP是目前世界上使用最为广泛的协议

    1.     TCP(Transmission Control Protocol)传输控制协议

    2.     IP:Internet Protocol 互联网协议


    0赞 · 0采集
  • 鱼七4560792 2021-08-16

    该套课程重点知识

    0赞 · 0采集
  • 鱼七4560792 2021-08-16

    UDP的两个编程主要类

    0赞 · 0采集
  • 鱼七4560792 2021-08-13

    socket多客户端通信

    0赞 · 0采集
  • 鱼七4560792 2021-08-13

    socket 通信模型和实现步骤

    0赞 · 0采集
  • JeasonLiu先生 2021-06-21
    socket过程中要考虑优先级,这影响到运行效率
    截图
    0赞 · 0采集
  • JeasonLiu先生 2021-06-21
    多线程通信
    截图
    0赞 · 0采集
  • JeasonLiu先生 2021-06-16
    ip地址和端口号组成了所谓的socket
    截图
    0赞 · 0采集
  • JeasonLiu先生 2021-06-16
    端口号用来区别一台主机上不同应用程序的通信。
    截图
    0赞 · 0采集
  • silence1210 2021-04-21
    package com.study.socket;
    import javax.sound.sampled.Port;
    import java.io.IOException;
    import java.net.*;
    /**
     * UDP Client客服端
     */
    public class UDPClient {
        public static void main(String[] args) throws IOException {
            //1.定义消息 服务端ip地址 端口号
            String msg = "用户名:sw;密码:123456";
            InetAddress address = InetAddress.getByName("DESKTOP-VQBUTGQ");
            int port = 8000;
            //2.创建数据报
            byte[] data = msg.getBytes();
            DatagramPacket packet = new DatagramPacket(data, data.length, address , port );
            //3.创建socket
            DatagramSocket socket =  new DatagramSocket();
            //4.发送消息
            socket.send(packet);
            //5.接收反馈信息
            byte[] data1 = new byte[1024];
            DatagramPacket packet1 = new DatagramPacket(data1 , 0 , data1.length);
            socket.receive(packet1);
            String rt = new String(data1,0,packet1.getLength());
            System.out.println("这是客户端,服务端反馈信息为: " + rt);
            //5.释放资源
            socket.close();
        }
    }
    package com.study.socket;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    
    /**
    * UDP 服务器端
    */
    public class UDPServer {
       public static void main(String[] args) {
           try {
               //1.建立socket并制定端口号
               DatagramSocket socket = new DatagramSocket(8000);
               int num = 0;
               while (true){
                   UDPServerThread thread = new UDPServerThread(socket);
                   thread.setPriority(4);
                   thread.run();
                   num++;
                   System.out.println("服务器端接受了 " + num + " 个客户端请求!");
               }
           } catch (SocketException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    }
    package com.study.socket;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    /**
    * UDP server 多线程实现
    */
    public class UDPServerThread extends Thread{
    
       DatagramSocket socket = null;
    
       public UDPServerThread(DatagramSocket socket){
           this.socket = socket;
       }
    
       @Override
       public void run() {
           try {
               byte[] data = new byte[1024];
               DatagramPacket packet = new DatagramPacket(data,data.length);
               //3.接收客户端发送的数据信息
               socket.receive(packet);//此方法在接收到数据报之前一直阻塞
               //4.读取数据报信息
               String msg = new String(data,0,packet.getLength());
               System.out.println("UDP server服务器接收到的信息: " + msg);
               //5.反馈信息
               String rt = "欢迎您!";
               byte[] data1 = rt.getBytes();
               InetAddress address = packet.getAddress();
               int port = packet.getPort();
               DatagramPacket packet1 = new DatagramPacket(data1, data1.length , address , port );
               socket.send(packet1);
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    }
    0赞 · 0采集
  • silence1210 2021-04-21
    package com.study.socket;
    
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.Socket;
    /**
    * socket编程模拟客服端
    */
    public class Client {
       public static void main(String[] args) {
           //1.创建客户端socket
           Socket socket = null;
           try {
               socket = new Socket("127.0.0.1",8888);
               //2.获取输出流
               OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
               PrintWriter pw = new PrintWriter(osw);
               pw.write("用户名:polly;密码:809");
               pw.flush();
               //4.释放资源
               pw.close();
               osw.close();
               socket.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    }
    package com.study.socket;
    
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
    * socket编程模拟服务器端
    */
    public class Server {
    
       public static void main(String[] args) {
           try {
               //1.建立服务端socket
               ServerSocket serverSocket = new ServerSocket(8888);
               int num = 0;
               while(true){
                   //2.监听端口
                   Socket socket = serverSocket.accept();
                   ServerThread st = new ServerThread(socket);
                   st.setPriority(4);//设置线程的优先级,范围是【1,10】  默认是5
                   st.start();
                   num++;
                   System.out.println("服务器端接受 " + num + " 个客户端请求!");
               }
           } catch (IOException e) {
               e.printStackTrace();
           }
    
       }
    }


    package com.study.socket;
    
    import java.io.*;
    import java.net.Socket;
    
    /**
    * 服务器线程实现
    */
    public class ServerThread extends Thread {
       Socket socket = null;
    
       public ServerThread(Socket socket){
           this.socket = socket;
       }
    
       @Override
       public void run() {
           if(socket != null){
               //读取输入流
               InputStream is = null;
               InputStreamReader isr = null;
               BufferedReader br = null;
               OutputStreamWriter osw = null;
               PrintWriter pw = null;
               try {
                   is = socket.getInputStream();
                   isr = new InputStreamReader(is);
                   br = new BufferedReader(isr);
                   System.out.println("服务器读取客户端信息:" + socket.getLocalAddress() + " : " +
                           socket.getLocalPort()  + " " + br.readLine());
                   //返回响应流
                   osw = new OutputStreamWriter(socket.getOutputStream());
                   pw = new PrintWriter(osw);
                   pw.write("请求已接到!");
                   pw.flush();
    
               } catch (IOException e) {
                   e.printStackTrace();
               } finally {
                   //关闭资源
                   try {
                       if(pw != null)  pw.close();
                       if(osw != null)  osw.close();
                       if(br != null)  br.close();
                       if(isr != null)  isr.close();
                       if(is != null)  is.close();
                       if(socket != null)  socket.close();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
           }
       }
    }
    0赞 · 0采集
  • qq_慕田峪9274801 2021-04-19

    基于udp通信:

    http://img.mukewang.com/607d88bf0001df2706000442.jpg

    http://img.mukewang.com/607d88e50001c42f06490390.jpg

    0赞 · 0采集
  • qq_慕田峪9274801 2021-04-18

    Socket socket=serverSocket.accept();

    0赞 · 0采集
  • qq_慕田峪9274801 2021-04-18
    1. URL--统一资源定位符=协议名称:资源名称

    2. java.net提供URL类表示URL   

    1.URL类中的常用方法:

    //创建一个URL对象

        URL url = new URL("http://www.baidu.com");  

        URL url1 = new URL(url, "/index.html?usrname=lqq#test");

    //url的常用方法

        System.out.println("URL主机名称:"+url1.getHost());

        System.out.println("URL协议:"+url1.getProtocol());

        System.out.println("URL端口:"+url1.getPort());

        System.out.println("URL文件路径:"+url1.getPath());

        System.out.println("URL查询字符串:"+url1.getQuery());

        System.out.println("URL相对路径:"+url1.getRef());

        System.out.println("URL文件名:"+url1.getFile());   


    2.通过URL获取html文件内容:

    public static void main(String[] args) throws IOException {
       URL url=new URL("http://www.snnu.edu.cn");
       InputStream is =url.openStream();
       InputStreamReader isr=new InputStreamReader(is);
       BufferedReader bufferedReader = new BufferedReader(isr);
       String data=bufferedReader.readLine();
       while (data!=null){
           System.out.println(data);
           data=bufferedReader.readLine();
       }
       bufferedReader.close();
       isr.close();
       is.close();
    }

    0赞 · 0采集
  • kitcheeH 2021-01-11

    网络基础知识

    地址、端口号、协议


    java 提供的网络功能有四大类

    1. InetAddress :用于标识网络上的硬件资源

    2. URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据

    3. Sockets:使用TCP协议实现网络通信的Socket相关的类

    4. Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。

     

    0赞 · 0采集
  • 黑马王 2020-12-30

    通信模型啊


    0赞 · 0采集
  • 黑马王 2020-12-30

    InetAddress.getLocalhost();获取InetAddress实例

    http://img2.mukewang.com/5fec3a010001372b16400779.jpg

    0赞 · 0采集
  • 黑马王 2020-12-30

    Socket编程

    1、网络基础知识

    2、InetAddress类

    3、URL

    4、TCP编程(Socket)

    5、UDP编程(Datagram)

    IP、端口、协议(共同语言)

    tcp/ip模型 物理层、数据链路层、网络层、传输层、应用层

    端口号范围0~65535,0~1023为系统保留

    Java网络功能四大类:InetAddress、URL、Socket、Datagram


    0赞 · 0采集
  • 流光记 2020-12-28

    多线程的知识点http://img3.mukewang.com/5fe99cb600015a4606780079.jpg

    截图
    0赞 · 0采集
  • 流光记 2020-12-28

    http://img4.mukewang.com/5fe99b540001c0f508100463.jpg

    Socket通信模型

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费