栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

22.网络编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

22.网络编程

网络编程

网络编程 : 实现PC与PC之间的数据交互

B / S : Browers 浏览器 / Server 服务器
C / S : Client 客户端 / Server 服务器

网络编程 : 套接字编程 -> Socket编程

底层网络编程中 协议 分为两大类 : TCP/UDP

网络编程的三要素

网络编程的三要素 :
    IP地址 : 要通讯的设备在网络中的地址  --> 要通讯的设备地址
    端口号 : 在通讯设备中找到需要通讯的软件(要通讯的线程)
    网络协议 : TCP 面向连接的网络协议 /UDP 面向无连接的网络协议

IP地址

IP地址 : 要通讯的设备在网络中的地址  --> 要通讯的设备地址
    192.168.12.120 -> 老师的IP
    cmd 命令 : ipconfig
    
IPV4 : 十进制点分法 -> 192.168.12.120  -> 32位表示IP地址的方式
    IPV4地址占用 : 4 个字节 -> 最多数值的IPV4地址 : 255.255.255.255
        192.168.网段.地址;
             192.168.网段.1 : 网关地址 (路由器地址)  特点 : 一直在线
                 ping 192.168.网段.1
                 
             192.168.网段.255 :  广播地址   

IPV6 : 十六进制冒分法 -> fe80:0000:b14f:9ff0:e75f:16e1 -> 64位表示IP地址的方式

InetAddress

InetAddress :Java中表示IP地址的类

创建对象的方法 :

static InetAddress getByName(String host)  : 获取IP地址对象
        (String host) : 主机名/主机的ip地址

static InetAddress[] getAllByName(String host) : 因为主机名可能重名,当通过主机名获取ip地址对象时,返回多个IP地址对象被InetAddress[] 接收了

static InetAddress getLocalHost() : 快速获取当前主机的IP地址对象

成员方法:

String getHostName()  : 获取当前IP地址对象指向的主机名

String getHostAddress()  : 获取当前IP地址对象指向的主机IP地址  

端口号

端口号 : 在通讯设备中找到需要通讯的软件(通讯的线程) -> port
    
注意 :
    1. 范围 : 0 - 65535
    2. 端口号不能重复
    3. 0-1000之间的端口号不要用,本地服务器 : 8080/80,MySql : 3306...

UDP协议

UDP协议 : 面向无连接的网络协议

 

UDP协议发送端的类

UDP协议发送端的类 : DatagramSocket

构造方法 :
    DatagramSocket() 
        
发送数据的方法 :
    void send(DatagramPackage p)
        
数据报包对象的创建 : DatagramPackage 
    DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) 
        byte[] buf, int offset, int length : 要发送的数据
        InetAddress address : 收件人的IP对象
        int port : 端口号 -> 接收数据的软件

UDP协议接收端的类

UDP协议接收端的类 : DatagramSocket

构造方法 : 
    DatagramSocket(int port)
        
接收数据的方法 : 
    void receive(DatagramPacket p) 
        
接收端数据报包对象的创建 :
    DatagramPacket(byte[] buf, int length) 
        byte[] buf : 接收数据的数组
        int length : 用数组多长的内容接收数据
        
    InetAddress getAddress()  : 获取发件人的IP地址对象    
    byte[] getData()  : 获取发送来的数据字节 -> 不会调用
    int getLength()  : 此次发送来的数据包中真实数据的长度

TCP协议

TCP协议 : 面向连接的网络协议

 

TCP协议的客户端代码

TCP协议的客户端 : Socket构造方法 :
    Socket(InetAddress address, int port) : 
        InetAddress address : 服务端的IP地址对象
        int port : 服务端通讯软件的端口号
        
发送数据的方法 :
    OutputStream getOutputStream() : 获取通讯的输出流对象

 public static void main(String[] args) throws IOException {
        //创建TCP客户端的类
        Socket socket = new Socket(InetAddress.getLocalHost(), 10086);//三次握手

        //获取通讯的输出流对象
        OutputStream os = socket.getOutputStream();

        //往服务器发送数据
        os.write("你好,服务器!".getBytes());

        //关闭资源
        //socket.close();//四次挥手
    }

TCP协议的服务端代码

TCP协议的服务端 : ServerSocket构造方法 :
    ServerSocket(int port) 
        
接收数据的方法 : //所有通讯流的获取全是Socket对象完成的
    Socket accept()  : 监听 (监听客户端发来的请求)
        
    通过Socket对象获取输入流对象,读取数据
        Socket类中 : InputStream getInputStream()
        Socket类中 : InetAddress getInetAddress()   -> 客户端的IP地址对象

public static void main(String[] args) throws IOException {
        //创建服务端的Socket对象
        ServerSocket ss = new ServerSocket(10086);


        //侦听获取服务端的Socket对象
        Socket accept = ss.accept();

        //服务端的Socket对象获取输入流对象
        InputStream is = accept.getInputStream();

        //读数据
        byte[] bys = new byte[1024];
        int len = is.read(bys);

        //解析数据 -> byte[] --> String
        String line = new String(bys, 0, len);

        System.out.println("客户端发来的数据是 : " + line);

        //获取客户端的信息
        InetAddress address = accept.getInetAddress();
        String hostName = address.getHostName();
        String hostAddress = address.getHostAddress();
        System.out.println("客户端的主机名是 : " + hostName);
        System.out.println("客户端的主机IP地址是 : " + hostAddress);

        //关闭服务器
        //ss.close();
    } 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号