zoukankan      html  css  js  c++  java
  • UDP通信

    UDP是一种面向无连接的协议,在通信时发送端和接收端不用建立连接。

    构造方法创建DatagramPacket对象

    发送端一定要明确指出数据的目的地(ip地址和端口号)而接收端不需要明确知道数据的来源,只需要接收到数据即可。

    DatagramSocket()

    用于创建发送端的DatagramSocket对象

    DatagramSocket(int port)

    创建接收端的DatagramSocket对象

    * 发送端

     * 1,创建DatagramPacket对象,封装数据接收的地址和端口

     * 2,创建DatagramSocket对象

    * 3,调用DatagramSocket中的send方法,发送数据

     * 4关闭资源DatagramSocket

     

     * UDP接收端

     *

     * 1,创建DatagramSocket对象绑定端口号(要和发送端端口号一致)

     * 2,创建字节数组,接收发来的数据

     * 3,创建数据包对象DatagramPacket

     * 4,调用DatagramSocket对象方法receiveDatagramPacket dp)接收数据,数据放在数据包中

     * 5,拆包

     

     

    package com.oracle.demo02;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;
    
    import sun.print.resources.serviceui;
    
    //客户端
    public class TCPClient {
    
        public static void main(String[] args) throws IOException, IOException {
            Scanner sc=new Scanner(System.in);
            // 创建客户端对象,明确要连接的服务器所在的ip地址和端口号
            Socket socket=new Socket("127.0.0.1",9999);
            //获取字节输出流
            OutputStream fos=socket.getOutputStream();
            //向服务器写数据
            fos.write(sc.next().getBytes());
            
            //接收服务器响应
            //获取字节输入流
            InputStream fis=socket.getInputStream();
            byte[] bytes=new byte[1024];
            int len=fis.read(bytes);
            //获取ip地址
            String ip=socket.getInetAddress().getHostAddress();
            System.out.println("ip地址为:"+ip+",发送的内容为:"+new String(bytes,0,len));
            socket.close();
        }
    
    }

     

    package com.oracle.demo02;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    //服务器端
    public class TCPserver {
    
        public static void main(String[] args) throws IOException {
            Scanner sc=new Scanner(System.in);
            // 创建服务器对象,明确端口号
            ServerSocket server=new ServerSocket(9999);
            //和客户端创建联系
            Socket socket=server.accept();
            //获取字节输入流
            InputStream fis=socket.getInputStream(); 
            byte[] bytes=new byte[1024];
            int len=fis.read(bytes);
            //获取客户端ip
            String ip=socket.getInetAddress().getHostAddress();
            System.out.println("ip地址为:"+ip+",发送的内容为:"+new String(bytes,0,len));
            //回复客户端
            //获取字节输出流
            OutputStream fos=socket.getOutputStream();
            fos.write(sc.next().getBytes());
            //释放资源
            server.close();
            
        }
    
    }

     

  • 相关阅读:
    iOS 版本更新迭代
    iOS 去掉导航栏最下面线的方法
    iOS AFNetWorking中block执行完后再执行其它操作
    iOS UICollectionViewCell 的拖动
    iOS 开发中有关pch文件,以及pch常用的内容
    iOS 中UIWebView的cookie
    iOS有关通讯录操作
    Eclipse 快捷键
    SublimeText
    正则表达式
  • 原文地址:https://www.cnblogs.com/longmingyeyu/p/12790700.html
Copyright © 2011-2022 走看看