• 网络编程浅析


    1.TCP编程原理

    原理:Client端向指定客户端发送连接请求,当Server端收到请求时,Client端与Server端建立连接。之后进行信心的传输。

    交互原理:

    知识补充  IP:相当于自身在网络上的门牌号             端口:接收和发送信息的时候都要选择一个端口进行发送。端口的作用是确定信息是属于哪个应用程序。

    交互原理:Client端:利用Socket的类向服务器端发送请求,该Socket的端口号由系统自动选择。

                  Server端:利用ServerSocket类指定接收请求的端口,当接收到Client发送过来的请求时,会自动创建Socket对象。

                  最后C/S端利用socket对象互相交互。

    使用:

    //Client端
    Socket socket = new Socket(String serPath,String serPort);//需要服务器端的地址和端口
    //Server端
    ServerSocket ss = new ServerSocket(int port);//选择接收的端口
    Socket socket = ss.accept();//当接收到Client发送过来的请求时会自动创建socket对象

    注:所以说当两边请求连接的时候,线程是处于阻塞状态的。之后运行方式查看线程这一章

    2.UDP

    补充的知识:

    InetAddress类:

    用来封装了数字式的IP地址和该地址的域名。

    你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解。

    InetAddress类内部隐藏了地址数字。

    该类没有构造方法,只有静态方法

    原理:Client端将所需要传输的信息打成一个包,然后发送给指定的服务器

    交互原理:Client端:数据利用DataPacket类打包并指定发送到的服务器地址,然后利用DataSocket类发送给服务器(需要自己选择端口,系统不再自动分配)。

                  Server端:创建DataPacket类放到指定的端口来捕获传送过来的信息,然后利用DataSocket类接收数据。

    使用:

    //Client
    String str = "It is Client";
    byte [] b = str.getBytes(); //将string类型转化成byte类型
    DatagramPacket dp = new DatagramPacket(byte[] b,int length,InetAddress ia,int port);//指定发送信息的大小,并指定发送的服务器的地址。
    DatagramSocket ds = new DatagramSocket(int port);//自行分配端口
    ds.send(dp);//利用send()方法将信息发送出去。
    //Server
    byte [] b = new byte[1024];
    DatagramPacket dp = new DatagramPacket(byte[] b,int length);//创建包捕获从Client传过来的数据
    DatagramSocket ds = new DatagramSocket(int port);//接收的端口号
    ds.receive(dp);//将捕获的数据传入dp中
    String data  =new String(dp.getData,0,dp.getLength());

    3.TCP和UDP的区别

        TCP:优点:先建立与服务器的连接,若连接不到则会一直连接,当连接之后再传送数据,保证数据能够互相传送并不丢失。(连接过程会耗费大量时间)

               缺点:传送速度慢。

        UDP:优点:将数据打成包传送,不管两端是否建立连接,传送速度快

               缺点:在传送的过程中数据可能丢失。

              

  • 相关阅读:
    STL简介
    Java语言实现简单FTP软件------>上传下载队列窗口的实现(七)
    c++模板
    10891
    错误处理:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
    Linux crontab 语法和具体的例子
    LoadImage()使用
    matplotlib简单的新手教程和动画
    三白话经典算法系列 Shell排序实现
    AccountManager教程
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5238435.html
Copyright © 2020-2023  润新知