zoukankan      html  css  js  c++  java
  • java 网络编程

    网络:将不同区域的计算机链接到一起   局域网、城域网、互联网

    IP地址:网络中的每个设备都会有一个唯一的数字标识 就是IP地址;一个IP地址可以对应多个域名,一个域名只能对应一个IP地址

    端口:用于区分计算机上的软件      占2个字节 在0-65535之间     同一个网络协议端口号不能相同   1024以下的端口号是预留给服务商的最好不要使用

    URI(uniform resource identifier):统一资源标识符,用来唯一的标识一个资源,是一个抽象的概念。http://主机名:8080/Token/index.do,

                                             getRequestURI 返回的是一个String 类型的字符串(/Token/index.do)返回一个相对路径。

    URL(uniform resource locator):URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

                                                  getRequestURL 返回一个StringBuffer类型(http://主机名:8080/Token/index.do)是一个绝对路径。          

    URL=协议+存放资源的主机域名+端口+资源文件

    数据传输的协议

      TCP协议:先建立链接 再进行数据传输  安全 效率低  面向链接;确保接收方完全正确地获取发送方所发送的全部数据;

             TCP没有数据大小方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。

      UDP协议:相互通信时无需建立链接  效率高 ; 发送方所发送的数据报并不一定以相同的次序到达接收方;

               UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。

    数据传输: 先封装   后拆装  

    一、网络编程

      1、UDP

         客户端:

                a、创建客户端 DatagramSocket

         b、准备数据  字节数组

         c、打包 DatagramPacket +服务器地址+端口

         d、发送

         e、关闭资源

      服务器:   

                a、创建服务器 DatagramSocket

         b、准备接收容器  字节数组 封装DatagramPacket

         c、封装成包 接受数据

         d、分析 数据

         e、关闭资源

    public class ServerTest {
        public static void main(String[] args) throws IOException {
            //1.创建服务器+端口
            DatagramSocket server=new DatagramSocket(8888);
            //2.准备接收容器
            byte []container=new byte[1024];
            //3、封装成包 DatagramPacket
            DatagramPacket packet=new DatagramPacket(container, container.length);
            //4、接收数据
            server.receive(packet);
            //5、分析数据
            byte [] data=packet.getData();
            int len =packet.getLength();
            System.out.println(new String(data,0,len));
            //6、释放资源
            server.close();
            
        }
    }
    
    
    public class ClientTest {
        public static void main(String[] args) throws IOException {
            //1.创建客服端+端口
            DatagramSocket client=new DatagramSocket(6666);
            //2、准备数据
            String msg="UDP编程  ======》 我是客户端";
            byte[]data=msg.getBytes();
            //3、打包数据   发送给指定地点+端口
            DatagramPacket packet=new DatagramPacket(data, data.length,new InetSocketAddress("localhost",8888));
            //4、发送
            client.send(packet);
            //释放资源
            client.close();
        }
    }
    View Code

     2、TCP

    public class TCPServer {
        public static void main(String[] args) throws IOException {
            //创建服务器 指定端口 
            ServerSocket server=new ServerSocket(8888);
            //接收客户端链接  阻塞式
            Socket socket=server.accept();
            System.out.println("一个客户端建立链接");
            //发送数据+接收数据
            String msg="欢迎使用";
            //输出流
            BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            bw.write(msg);
            bw.newLine();//行结束符 
            bw.flush();
        }
    //输出  一个客户端建立链接
    
    public class TCPClient {
        public static void main(String[] args) throws UnknownHostException, IOException {
            //指定服务器+端口
            Socket client=new Socket("localhost",8888);
            //接收数据
            BufferedReader bd=new BufferedReader(new InputStreamReader(client.getInputStream()));
            String echo=bd.readLine();
            System.out.println(echo);
            bd.close();
        }
    }
    //输出    欢迎使用
    View Code
  • 相关阅读:
    python之常用内置函数
    python基础之文件操作
    简洁版三级菜单
    JS 事件代理
    捕获当前事件作用的对象event.target和event.srcElement
    【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题
    JSON详解
    多线程小例子
    jquery中attr和prop的区别
    django 过滤器
  • 原文地址:https://www.cnblogs.com/jalja/p/4598604.html
Copyright © 2011-2022 走看看