zoukankan      html  css  js  c++  java
  • 网络通信协议

    网络通信协议

    InetAddress

    getLocalHost()//获取本地电脑

    InetAddress inet=InetAddress.getLocalHost();

     

    getByName()//根据主机名获取Inet对象

    InetAddress inet2=InetAddress.getByName("主机名");

     

    getHostName()//获取主机名

    String m=inet2.getHostName();

     

    getHostAddress()//获取IP地址

    String ip=inet.getHostAddress();

    UDP协议

    一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

    UDP传输数据被限制在64K以内。

    TCP协议

    TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。

    UDP通信

    DatagramPacket

    构造方法:

    DatagramPacket(byte[]  b, int  length)//用来接收长度为length的数据包

    DatagramPacket(byte[]  b,int  length , InetAddress  address, int  port)//将长度为length的包发送到指定主机上的指定端口号,

    常用方法:

    getAddress()  返回某台机器的IP地址,返回值:InetAddress

    getPort()  返回某机器的端口号,返回值int

    gerDate()  返回数据缓冲区,返回值byte[]

    getLength()  返回要发送或接收的数据的长度,返回值int

    DatagramSocket

    构造方法:

    DatagramSocket()  发送端

    DatagramSocket(int  port)  接收端,需要明确端口号

    常用方法:

    reveive(DatagramPacket  p) 接收数据报包

    send(DatagramPacket  p) 发送数据报包

    例:

    发送端:

    Scanner sc=new Scanner(System.in);

    String aaa=sc.next();//输入要发送的内容

    byte[] bytes=aaa.getBytes();

    //1.创建数据包对象,封装要发送的信息,接收端的id及端口号

    InetAddress inet=InetAddress.getByName("127.0.0.1");//127.0.0.1 可代表本机地址

    DatagramPacket dp=new DatagramPacket(bytes,bytes.length,inet,8888);

    //2.创建DatagramSocket 对象

    DatagramSocket ds=new DatagramSocket();

    //3.发送数据包

    ds.send(dp);

    //释放资源

    ds.close();

    接收端:

    //1.创建DatagramSocket对象明确端口号

    DatagramSocket ds=new DatagramSocket(8888);

    //2.创建字节数组接收数据

    byte[] bytes=new byte[1024];

    //3.创建数据包对象

    DatagramPacket dp=new DatagramPacket(bytes,bytes.length);

    //4.接收数据包

    ds.receive(dp);

    //5.拆包

    //获取发送端的ip

    String ip=dp.getAddress().getHostAddress();

    //获取发送端的端口号

    int port=dp.getPort();

    //获取实际数据的长度

    int length=dp.getLength();

    System.out.println("ip:"+ip+",端口号:"+port+",发送内容:"+

    new String(bytes,0,length));

    //6.关闭资源

    ds.close();

    TCP通信

    ServerSocket

    ServerSocket(int  port)  绑定到指定的端口号上

    方法:

    accept() 获取连接的客户端Socket对象

    Socket

    Socket(String  host , int  port)

    Socket(InetAddress  address , int  port) //创建Socket对象 , 连接到指定ip地址的指定端口号

    方法:

    getInputStream() 该方法返回一个InputStream类型的输入流对象,如果该对象是由服务器端的Socket返回,就用于读取客户端发送的数据,反之,用于读取服务器端发送的数据

    getOutputStream() 该方法返回一个OutputStream类型的输出流对象,如果该对象是由服务器端的Socket返回,就用于向客户端发送数据,反之,用于向服务器端发送数据

    getLocalAddress() 获取Socket对象绑定的本地IP地址,并将IP地址封装成InetAddress类型的对象返回

    getPort() 返回一个int类型对象,该对象是Socket对象与服务器端连接的端口号

    getInputStream()和getOutStream()方法分别用于获取输入流和输出流。当客户端和服务端建立连接后,数据是以IO流的形式进行交互的,从而实现通信。

  • 相关阅读:
    flex设置成1和auto有什么区别
    在SUBLIME TEXT中安装SUBLIMELINTER进行JS&CSS代码校验
    gulp教程之gulp-less
    sublime注释插件与javascript注释规范
    移动端尺寸基础知识
    webpack入门教程
    IO中同步、异步与阻塞、非阻塞的区别
    Node.js的线程和进程
    Cocos2d-x 3.0中 物理碰撞检測中onContactBegin回调函数不响应问题
    hdu 1789 Doing Homework again 贪心
  • 原文地址:https://www.cnblogs.com/hhthtt/p/10632637.html
Copyright © 2011-2022 走看看