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

    一、网络编程

    (1)网络编程:Java作为一种互联网编程语言,其提供了网络类库,可以实现无痛的网络连接,网络连接的底层都被Java隐藏了,由jvm控制。java实现了一个跨平台的网络库。形成了统一的网络编程环境。

    (2)网络编程的目的:直接或间接通过网络协议于其他计算机实现数据交互,通讯,资源共享


    (4)关键:准确定位之际、高效可靠的传播


    (3)网络通信的要素:通信双方的一个IP和端口号(通过一定规则----网络通信协议)

    a、OSI参考模型:(互联网不广泛使用)七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

    b、TCP/IP参考模型:四层:应用层、传输层、网络层、物理层(物理+数据链路层)

    c、TCP/IP各层协议:应用层(HTTP;FTP;Telnet;DNS);传输层(TCP;UDP...);网络层(IP,ICMP,APR);物理层(link)


    二、通信要素:ip和端口号

    (1)ip地址(标识Internet上唯一计算机(通信实体)):InetAddress

    a、String getHostName()获得主机名

    b、byte[] getAddress()返回每个字节的地址

    c、String getHostAddress()返回ip地址

    d、boolean isReachable()测试目标地址是否能到达

    e、IneetAddress localHost = InetAddress.getLocalHost本地主机地址

    (2)本地回路地址:127.0.0.1 主机名:localhost

    (3)IP地址的分类:ipv4和ipv6

    (4)ipv4:4个字节(32位)组成(每个字节都在0-255之间,使用点分时进制);

    (5)ipv6:16个字节(128位,每位16进制)

    (6)公网地址(万维网),私有地址(局域网--192.168.)

    (7)端口号:标识计算机上正在运行的进程

    (8)端口号分类:

    a、公认端口(0--1023):被预先设定的服务通信占用(http:80,ftp:21)。

    b、注册端口(1024-49151):分配个用户进程(Tomcat:8080,mysql:3306,oracle:1521)

    c、动态/私有端口:49152-65535

    (9)ip地址的表现方式:ip地址;域名


    三、通信要素:网络协议

    1、TCP/IP 协议簇:TCP/IP是一组协议,TCP是传输控制写,IP是网络互联协议(网络层重要协议,主要支持网间互联的数据通信)

    2、传输层主要的两种协议:传输控制协议TCP、用户数据包协议UDP

    3、TCP:使用TCP协议,必须要建立TCP连接,形成传输数据通道。采用三次握手,点对点通信,是可靠的

    TCP协议再进行通信的时候需要客户端和服务端

    传输完毕之后,需要释放已建立的连接,四次挥手,效率低

    4、UDP:将数据源封装成一个个的数据包,不需要建立连接,每个数据包大小限制再64k以内,发送双方不需要确认,不可靠。不需要建立连接,可以广播。开销小,效率高,不可靠,速度块(直播)。


    四、TCP编程

    1、Socket:

    (1)ip和端口号就组成了一组网络套接字(Socket)。网络上唯一标识的ip和端口号就组成了唯一标识的标识符套接字。

    (2)网络两端都在需要具备socket,它是两台机器通信的端点。

    (3)数据在两个Socket中通过IO流的方式进行通信

    (4)先写服务端Socket:

    a、创建一个Socket:ServerSocket serverSocket = new ServerSocket(7765);

    b、需要监听客户段发来的请求,并返回一个Socket:Socket socket = serverSocket.accept();

    c、接受客户端发送的消息:InputStream is = socket.getInputStream();

    d、处理消息

    e、关闭资源

    (5)客户端

    a、创建socket对象:InetAddress inet = InetAddress.getByName("127.0.0.1");
    socket = new Socket(inet, 8989);

    b、获取socket对应的流:OutputStream os = socket.getOutputStream();

    (6)常用方法:getInputStream()、getOutputStream()、getInteAddress();getLocalAddress();getPort();getLocalPort();close();shutdownInput();shutdownOutput();


    2、Socket步骤;

    (1)创建Socke对象:根据制定的服务端的ip地址和端口号

    (2)获取socket的输入输出流:getInputStream/getOutputStream

    (3)通过一定的协议对socket进行读写操作:TCP/IP或UDP

    (4)关闭socket


    五、UDP编程

    1、TCP:使用tcp提供可依赖的字节流服务进行数据传输(流套接字)

    2、UDP:数据报套接字:通过数据包的方式,使用DatagramSocket对象,会把数据封装成DatagramPacket,

    3、UDP编程流程:

    (1)建立接收端和发送端

    (2)需要创建DatagramSocket和DatagramPacket对象

    (3)封装数据报

    (4)调用socket接收和发送方法

    (5)关闭资源


    六、URL编程

    1、url:统一资源定位符,互联网上的某一资源地址

    2、url组成:由五部分组成

    <传输协议>://<主机名>:<端口号>/<资源目录>#片段名?参数列表

    3、url的常用方法:

    public URL(String spec)通过一个url地址,构造出一个url对象

    URL(URL context,String spec) eg:new URL(new URL(""),"indext.html")

    URL(String,String,String) eg:new URL("HTTP","www.baidu.com","index.html")

    URL(String args1,String args2,String args3,String args4) eg:new URL("HTTPS","www.baidu.com",80,"index.html")

    String getProtocol()获取URL的协议名

    getHosts()获取主机名

    getPath()

    getFile()

    getQuery()获取查询名

  • 相关阅读:
    主要工业以太网性能横向比较
    聊一聊工业以太网
    FPGA学习之RoadMap
    我眼中的FPGA
    板级通信总线之SPI及其Verilog实现
    ALTERA FPGA中实现低于时钟周期的端口延时
    Javascript 闭包浅析(一)
    node.js docker centos7 下环境构建命令
    ruby sass 命令
    如何配置nginx的反向代理nodes 3000端口项目
  • 原文地址:https://www.cnblogs.com/JQbiu/p/11248170.html
Copyright © 2011-2022 走看看