zoukankan      html  css  js  c++  java
  • TCP和UDP Socket

    1.tcp协议的编程

     * 1:客户端。步骤
     *         1:创建Socket对象,构造方法里需要指定服务端的ip地址和端口.
     *         Socket socket = new Socket(服务端的ip地址或者InetAddress对象,服务端的端口);
     *         2:如果想要从服务端读取数据,那么就需要获得输入管道:InputStream
     *           如果想将数据写到服务端,则需要获得输出管道:OutputStream
     *             读取数据:  InputStream is = socket.getInputStream();
     *             发送数据:   OutputStream os = socket.getOutputStream();
     *         3:准备数据,用InputStream来读取数据,或者用OutputStream来向服务端写入数据,
     *             读数据 : is.read(数据)
     *             写数据:os.write(数据)
     *         4:关闭流,关闭Socket。
     *             is.close();
     *             os.close();
     *             socket.close();
     * 2:服务端:步骤
     *     1;创建ServerSocket对象,并且指定监听的端口。
     *     ServerSocket ss = new ServerSocket(9999);
     *     2:调用accept方法,监听是否有客户端连接。如果连接上则分配一个Socket.
     *     3:获得Socket的读取管道和输出管道。再进行读取和写入数据。
     *     4:将Socket关闭。
     *     5:将ServerSocket关闭。

    2.TCP的发送和接收

    * 发送

    // 创建套接字。它会自动到指定ip地址的指定端口。
    Socket socket = new Socket("127.0.0.1", 9999);
    // 发送数据。
    String str = "tcp,我来了";
    // 得到输出管道。
    OutputStream os = socket.getOutputStream();
    os.write(str.getBytes());
    os.close();
    socket.close();

    * 接收

    ServerSocket ss = new ServerSocket(9999);
    //监听是否有客户端连接到本服务器端。如果有连接,则分配一个Socket。
    Socket socket = ss.accept();//阻塞式的方法。
    //获得输入管道。
    InputStream is = socket.getInputStream();
    byte[] b =new byte[1024];
    //返回本次读取的字节数量。
    int length = is.read(b);
    System.out.println(new String(b,0,length));
    ss.close();

    3.UDP发送和接收

    * 发送

    InetAddress ia = InetAddress.getLocalHost();//本机地址
    Scanner scanner = new Scanner(System.in);
    String sendIn = scanner.nextLine();
    DatagramSocket socket = new DatagramSocket();
    byte[] b = sendIn.getBytes();
    DatagramPacket p = new DatagramPacket(b, b.length, ia, 9900);
    socket.send(p);
    socket.close();   

    * 接收

    DatagramSocket socket = new DatagramSocket(9900);
    byte[] b = new byte[1024];
    DatagramPacket p = new DatagramPacket(b, b.length);
    socket.receive(p);
    System.out.println(p.getAddress().getHostAddress()+p.getPort()+(new String(b,0,b.length)));

     

  • 相关阅读:
    JAVA常用知识总结(十一)——数据库(一)
    JAVA常用知识总结(十)——Maven
    JAVA常用知识总结(九)——线程
    JAVA常用知识总结(八)——计算机网络
    JAVA常用知识总结(七)——Spring
    Spring Cloud Alibaba教程:Nacos
    OpenCV入门(2)- Java第一个程序
    OpenCV入门(1)- 简介
    Elastic Job入门(1)
    Elastic Job入门(3)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5236656.html
Copyright © 2011-2022 走看看