zoukankan      html  css  js  c++  java
  • 数据报模型

     1 import java.io.IOException;
     2 import java.net.DatagramPacket;
     3 import java.net.DatagramSocket;
     4 import java.net.SocketAddress;
     5 import java.net.SocketException;
     6 
     7 /**
     8  * 服务器 
     9  */
    10 public class Server {
    11 
    12     public static void main(String[] args) {
    13         DatagramSocket ds = null; // 发送 和接收
    14         DatagramPacket dp = null; // 打包 和拆包
    15         // 回复的新包裹
    16         DatagramPacket dpTo = null; // 打包 和拆包
    17         try {
    18             // 实例化服务器
    19             ds = new DatagramSocket(8800);
    20             // 创建一个byte类型的数组 ==》快递的内容
    21             byte[] buf = new byte[1024];
    22             dp = new DatagramPacket(buf, buf.length);
    23             // 接收B用户给我们的快递
    24             ds.receive(dp);
    25             /**
    26              * 拆包操作
    27              * dp.getData():包裹实际内容
    28              * 0 :从什么位置开始获取信息
    29              * dp.getLength():包裹所有内容
    30              */
    31             String msg = new String(dp.getData(), 0, dp.getLength());
    32             System.out.println("用户B的地址==》" + dp.getAddress().getHostName());
    33             System.out.println("用户B包裹的内容==》" + msg);
    34             // 用户A想给用户B回信 获取B用户的地址
    35             SocketAddress address = dp.getSocketAddress();
    36             // 用户A开始打包
    37             byte[] reply = "您好! 我是用户A已经收到了您的包裹!".getBytes();
    38             dpTo = new DatagramPacket(reply, reply.length, address);
    39             // 发送
    40             ds.send(dpTo);
    41         } catch (SocketException e) {
    42             e.printStackTrace();
    43         } catch (IOException e) {
    44             e.printStackTrace();
    45         } finally { // 释放资源
    46             ds.close();
    47         }
    48 
    49     }
    50 }
    服务器端
     1 /**
     2  * 客户端   
     3  */
     4 public class Client {
     5     public static void main(String[] args) {
     6         DatagramSocket ds = null; // 发送 和接收
     7         DatagramPacket dp = null; // 打包 和拆包
     8 
     9         // 回复的新包裹
    10         DatagramPacket dpTo = null; // 打包 和拆包
    11 
    12         try {
    13             byte[] say = "我是B用户,给您买了一张春节回家的火车票".getBytes();
    14             InetAddress address = InetAddress.getByName("localhost");
    15             // 打包
    16             dp = new DatagramPacket(say, say.length, address, 8800);
    17             // 发送
    18             ds = new DatagramSocket();
    19             ds.send(dp);
    20             // 用户B 开始接收 A用户的数据
    21             byte[] buf = new byte[1024];
    22             dpTo = new DatagramPacket(buf, buf.length);
    23             // 接收
    24             ds.receive(dpTo);
    25             // 拆包
    26             String reply = new String(dpTo.getData(), 0, dpTo.getLength());
    27             System.out.println("我是用户B得到了A的回信地址====》"
    28                     + dpTo.getAddress().getHostAddress());
    29             System.out.println("我是用户B得到了A的回信内容====》" + reply);
    30         } catch (SocketException e) {
    31             e.printStackTrace();
    32         } catch (IOException e) {
    33             e.printStackTrace();
    34         } finally { // 释放资源
    35             ds.close();
    36         }
    37     }
    38 }
    客户端

    数据通过DatagramPacket类打包,通过DatagramSocket类发送与接收。

  • 相关阅读:
    ASP.NET中Session,Application,Viewstate,Cache,隐藏域和带参数的传接收值的用法
    JS页面跳转搜集
    SQL中常用的日期转化
    DIV+CSS兼容性解决IE6/IE7/FF浏览器的通用方法
    C#中将数据导出为EXCEL方式汇总
    正则表达式大全
    ASP.NET中Cookie用法小节
    div+CSS浏览器兼容问题整理
    站长常用的200个js代码
    [转]主机和终端
  • 原文地址:https://www.cnblogs.com/ak666/p/8204766.html
Copyright © 2011-2022 走看看