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

    Ip地址:每台电脑在互联网上唯一的标识符
    由四个网段组成,其本质是4个字节的二进制数

    主机名:计算机名 (可能会与其他人重复)

     Java中的InetAdress类表示一个IP地址
    主要是包括4个方法
    获取地址对象
    static InetAdress getLocalHost() 获取本地主机
    static InetAdress getByName(String host) 根据主机名(或者IP地址 字符串)获取主机
    如果是通过主机名获取的话就会把主机名和IP地址一道获取

    根据地址对象获取IP字符串获取主机名字符串
    String getHostName() 获取主机名称
    String getHostAdress()获取主机字符串形式的IP


    网络常识性知识
        ipconfig
        ping 判断两台计算机链接是否通畅
        本机IP127.0.0.1
        xxx.xxx.xxx.255广播地址

    端口号
    用来标识不同的程序,通过先找到IP地址然后再对应端口号就能连接两个程序了

    网络编程俗称套接字编程
    Socket
    套接字
    通信两端都有Socket
    网络通信其实就是Socket之间的通信
    数据在两个Socket之间通过IO传输
    Socket编程一般使用TCP和UDP两种协议
    UDP中没有明显的IO流但是TCP中会显示明确的IO流

    UDP不可靠但是连接快

    数据打包的相关类是DategramPacket
    数据打包步骤
    UDP发送端步骤
    1.建立发送端
    -创建DategramPacket的对象

    2.创建数据
    -创建数据

    3.建立数据包
    -创建数据包对象,然后调动构造方法
    数据,数据长度,目标地址,端口号

    4.调用Socket的发送方法
    发送方法:send(数据包名)

    5.关闭Socket
    Socket关闭

    数据接收包步骤
    UDP接收端步骤
    1.建立接收端
    -指定端口号
    DatagramSocket ds = new DatagramSocket(发送端的端口)

    2.建立数据包
    因为不需要知道IP地址所以直接用最基础的接收方法
    创建数据数组用于接收数据
    然后调用构造方法
    DatagramPacket dp = new DatagramPacket(数据,数据长度)

    3.调用Socket的接收方法
    receive方法
    ds.receive(dp)


    4.解析数据


    5.关闭Socket
    Socket关闭


    TCP下的网络编程
    客户端和服务器端
    客户端:
    用的是Socket,步骤:
    1.创建Socket的对象,传入的参数为IP地址(或者IP地址对象)和套接字
    套接字可以确定接收来的IP地址
    2.创建输出流对象,用的是getOutputStream方法
    3.写值
    4.关闭流

    服务器端:
    用的是ServiceSocket,步骤:
    1.创建ServiceSocket的对象,套接字
    2.创建输入流对象,用的是getInputStream方法
    3.读取值
    4.关闭流

    如果是发送字符串,那么需要将字符串转换成字符数组然后一个字符一个字符的接收
    注意,客户端在发送字符串的时候,服务器在等待,如果用read读取单个字符的话,服务器端会等待,因为服务器端不知道客户端是否发送完了信息,所以要给客户端加ShutOutput,用来终止输出

    客户端上传文件,服务器接收并copy一份
    客户端:
    用IO流的知识,先创建一个字节流(FileInputStream)对象,然后将文件中的东西传输到服务器端口,注意,不是打印,是将数据数到服务器上,因为是实时传输,所以在服务器用字节输出流对象(FileOutputStream),传输到指定文件中。

  • 相关阅读:
    EasyUI 取得选中行数据
    为什么给的待遇很丰厚,我的90后员工还是要走?
    ***ECharts图表入门和最佳实践
    ***百度统计图表Echarts的php实现类,支持柱形图、线形图、饼形图
    <?php $sql = <<<EOF 。。。。EOF;?>这种写法是什么意思
    ***mysql中查询今天、昨天、上个月sql语句
    ***iOS开发中@selector的理解与应用
    ***Xcode Interface Builder或Storyboard中可建立那两种连接?
    什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
    IOS笔记 #pragma mark的用法和作用(方便查找和导航代码)
  • 原文地址:https://www.cnblogs.com/Yuanpp/p/8445758.html
Copyright © 2011-2022 走看看