美文网首页
网络编程

网络编程

作者: 啦啦啦_9a5f | 来源:发表于2019-01-02 10:15 被阅读0次

    一、InetAddress

    java.net包下,此类表示互联网协议(IP)地址

    static InetAddress getByName(String host)//根据主机名或者IP地址获取相关信息

    关键在于如何获取InetAddress对象

    二、使用UDP协议发送对象

    1.创建发送端Socket对象

    DatagramSocket:此类用来发送和接受数据报包的套接字,基于UDP协议

    (1)DatagramSocket():创建Socket对象并随机分配端口号

    DatagramSocket ds = new DatagramSocket();

    (2)DatagramSocket(int port ):创建Socket对象并指定端口号

    2.创建数据并打包

    DatagramPacket:此类表示数据报包

    数据byte[]

    设备地址IP

    进程的地址:端口号

    DatagramPacket(byte[] buf,int length,InetAddress address,int port)

    3.发送数据

    ds.send(p);

    4.释放资源

    ds.close();

    三、UDP接收数据

    1.创建接收端Socket对象

    DatagramSocket ds = new DatagramSocket(8888);

    2.接收数据

    byte[] bys = new byte[1024];

    DatagramPacket dp = new DatagramPcket(bys,bys.length);

    ds.receive(dp);//阻塞

    3.解析数据

    //InetAddress getAddress():获取发送端的IP对象

    InetAddress address = dp.getAddress();

    //byte[] getData():获取接收到的数据,也可以直接创建包对象时的数组

    byte[] data = dp.getData();

    //int getLength():获取具体收到的字节个数

    int length = dp.getLength();

    4.输出数据

    System.out.println("sender---->" + address.getHostAddress());

    System.out.println(new String(data,0,length));

    5.释放资源

    dp.close();

    UDP协议收发数据的注意事项: 端口号错误,数据可以正常发出,不会出现异常,但是收不到数据

    四、使用TCP发送数据

    1.创建发送端Socket对象(创建连接)

    Java.net.Socket实现客户端套接字

    Socket(InetAddress address,int port)

    Socket s = new Socket(InetAddress address,int port)

    2.获取输出流对象

    OutputStream os = s.getOutputStream();

    3.发送数据

    String str = "hello tcp";

    os.write(str.getBytes());

    4.释放资源

    s.close();

    四、TCP接收端

    1.创建接收端Socket对象

    Java.net.ServerSocket

    ServerSocket(int port);

    ServerSocket ss = new ServerSocket(10086);

    2.监听(阻塞)

    ServerSocket中没有关于获取数据的方法

    Socket s = ss.accept();

    3.接受数据

    InputStream is = s.getInputStream();

    4.获取数据

    byte[] bys = new byte[1024];

    int len = is.read(bys);

    5.输出数据

    System.out.println(new String(bys,0,len));

    6.释放资源

    s.close();

    相关文章

      网友评论

          本文标题:网络编程

          本文链接:https://www.haomeiwen.com/subject/vjwalqtx.html