A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王洪洋 初级黑马   /  2019-5-13 14:41  /  1084 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 网络编程
   - 概念:同一个网络中多台设备进行数据交换
2. 网络编程三要素
   - ip地址:  ipconfig 获取本机IP地址    网络是否通: ping 192.168.1.24      127.0.0.1  代表本机地址
   - 端口号:0-65535    0-1023系统保留   1024-65535我们来使用
   - 通信协议:
     - UDP:用户数据包协议  特点:速度快  无连接  不发保证数据完整
     - TCP:传输控制协议       特点:有连接(三次握手)保证数据完整性  相对速度慢些
3. InterAddress获取本机IP地址
         //public static InetAddress getByName(String host):确定主机名称的IP地址。主机名称可以是  机器名称,也可以是IP地址
               InetAddress address = InetAddress.getByName("DESKTOP-L1B80UO");
               //InetAddress address = InetAddress.getLocalHost();
               //public String getHostName():获取此IP地址的主机名
               String name = address.getHostName();
               //public String getHostAddress():返回文本显示中的IP地址字符串
               String ip = address.getHostAddress();
               System.out.println("主机名:" + name);
               System.out.println("IP地址:" + ip);

1. udp通信
   - 发送数据
           //创建发送端的Socket对象(DatagramSocket)
                 // DatagramSocket() 构造数据报套接字并将其绑定到本地主机上的任何可用端口
                 DatagramSocket ds = new DatagramSocket();
                 //创建数据,并把数据打包
                 //DatagramPacket(byte[] buf, int length, InetAddress address, int port)
                 //构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。
                 byte[] bys = "hello,udp,我来了".getBytes();
         //        int length = bys.length;
         //        InetAddress address = InetAddress.getByName("192.168.1.66");
         //        int port = 10086;
         //        DatagramPacket dp = new DatagramPacket(bys,length,address,port);
                 DatagramPacket dp = new DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.1.104"),10086);
                 //调用DatagramSocket对象的方法发送数据
                 //void send(DatagramPacket p) 从此套接字发送数据报包
                 ds.send(dp);
         
                 //关闭发送端
                 //void close() 关闭此数据报套接字
                 ds.close();
   - 接受数据
         //创建接收端的Socket对象(DatagramSocket)
                 //DatagramSocket(int port) 构造数据报套接字并将其绑定到本地主机上的指定端口
                 DatagramSocket ds = new DatagramSocket(10086);
         
                 //创建一个数据包,用于接收数据
                 //DatagramPacket(byte[] buf, int length) 构造一个 DatagramPacket用于接收长度为 length数据包
                 byte[] bys = new byte[1024];
                 DatagramPacket dp = new DatagramPacket(bys,bys.length);
         
                 //调用DatagramSocket对象的方法接收数据
                 System.out.println("启动啦");
                 ds.receive(dp);
                 System.out.println("1111");
         
                 //解析数据包,并把数据在控制台显示
                 //byte[] getData() 返回数据缓冲区
         //        byte[] datas = dp.getData();
                 //int getLength() 返回要发送的数据的长度或接收到的数据的长度
         //        int len = dp.getLength();
         //        String dataString = new String(datas,0,len);
         //        System.out.println("数据是:" + dataString);
                 System.out.println("数据是:" + new String(dp.getData(),0,dp.getLength()));
         
                 //关闭接收端
                 ds.close();

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马