黑马程序员—网络编程之UDP

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——


udp第一讲

ds=new DatagramSocket()即可做发送,也可做接收

字节数组byte [] by=new byte[1024];

数据包 DatagramPacket dp=new DatagramPacket(by,by.length,InetAddress.getByName(“localhost”),8080);

DatagramPacket dp2=new DatagramPacket(by,by.length);

ds. send(dp);发送,ds.receive(dp2)接收

/**

* @author myluo

* 网络编程

*1:ip(通过ip确定主机)

*2:端口(通过端口确定应用程序1024以上)

*3:协议(TCP/UDP)(前者安全效率低如打电话:后者效率高但不安全如发短信)

*4:Socket编程(应用的插座)

*/

package com.theima.www;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class IPDemo1 {

                         public static void main(String[] args) {
                             //网络编程基本方法
                            // method1();
                             //udp协议下的数据包的发送
                            // udpSendMethod();
                               //udp协议下的数据发送
                             udpSendmethod2();
                        }

                         //udp协议下的数据发送
                         private static void udpSendmethod2() {
                            // TODO Auto-generated method stub
                             try {
                                DatagramSocket   ds=new   DatagramSocket(5555);

                                BufferedReader   br=new  BufferedReader(new   InputStreamReader(System.in));

                                String   len=null;

                                try {
                                    while((len=br.readLine())!=null){
                                           if("over".equals(len)){
                                               break;
                                           }
                                           byte  []  by=len.getBytes();

                                           DatagramPacket   dp=new  DatagramPacket(by,by.length,InetAddress.getByName("localhost"),7777);

                                           ds.send(dp);

                                    }

                                    ds.close();

                                } catch (IOException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }

                            } catch (SocketException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }

                        //udp数据包的发送
                         private static void udpSendMethod() {
                            // TODO Auto-generated method stub
                                DatagramSocket    ds=null;

                             try {
                                  //创建数据包服务
                                    ds=new  DatagramSocket(8888);
                                   //创建要发送的字节数组
                                    byte[]  by="测试数据包".getBytes();

                                    try {
                                         //创建数据包对象
                                        DatagramPacket   dp=new  DatagramPacket(by,by.length,InetAddress.getByName("localhost"),9999);

                                        try {
                                             //发送数据包
                                            ds.send(dp);
                                            //关闭资源
                                            ds.close();
                                        } catch (IOException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }

                                    } catch (UnknownHostException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }

                            } catch (SocketException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }

                        //网络编程获取ip
                        private static void method1() {
                            // TODO Auto-generated method stub
                                      try {
                                          //根据主机的名字获取ip
                                          InetAddress  obj=InetAddress.getByName("www.baidu.com");

                                          System.out.println("百度的主机名和ip"+obj);

                                          System.out.println("百度的主机名"+obj.getHostName());
                                          System.out.println("百度的ip"+obj.getHostAddress());

                                        //获取本机的名字和ip
                                        InetAddress   ip=InetAddress.getLocalHost();

                                        System.out.println("主机名和ip"+ip);

                                        String   name=ip.getHostName();

                                        System.out.println("主机名:"+name);

                                        String   ip2=ip.getHostAddress();

                                        System.out.println("ip=="+ip2);

                                    } catch (UnknownHostException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                        }
}

package com.theima.www;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @author myluo
 *
 */
public class IPDemo2 {
             //udp协议下的信息接受
            public static void main(String[] args) {
                            //创建服务对象,DatagramSocket   既能发信息也能收信息。
                            DatagramSocket   ds=null;
                            try {
                                //指定已接受的端口
                                ds=new  DatagramSocket(9999);
                                //创建要接受的字节数组
                                byte  []  by =new  byte[1024];
                                //创建接受的数据包对象
                                DatagramPacket  dp=new   DatagramPacket(by,by.length);

                                try {
                                    //服务接受数据包
                                    ds.receive(dp);

                                    //创建InetAddress对象
                                    InetAddress   ip=dp.getAddress();
                                    //获取数据
                                    System.out.println("ip==="+ip.getLocalHost());
                                    System.out.println("收到的信息:="+new String(dp.getData(),0,dp.getLength()));
                                    System.out.println("那个端口号发过来的:"+dp.getPort());

                                    //关闭资源
                                    ds.close();

                                } catch (IOException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }

                            } catch (SocketException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
            }
}

package com.theima.www;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * @author myluo
 *
 *
 *
 */
public class IODemo3 {
              //udp之数据的接收
              public static void main(String[] args) {
                         try {
                            DatagramSocket    ds=new  DatagramSocket(8888);

                            while(true){

                                byte  []  by=new  byte[1024];

                                DatagramPacket   dp=new   DatagramPacket(by,by.length);

                                try {
                                    ds.receive(dp);

                                    String  ip=dp.getAddress().getHostAddress();

                                    String  data=new  String(dp.getData(),0,dp.getLength());

                                    System.out.println(ip+" : "+data);

                                } catch (IOException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }

                            }

                        } catch (SocketException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
            }
}

package com.theima.www;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @author myluo
 *
 * 聊天程序
 *
 */
public class IODemo4 {
              public static void main(String[] args) {
                           try {
                            DatagramSocket   ds=new  DatagramSocket(4777);
                            DatagramSocket   dgs=new  DatagramSocket(4666);

                            new  Thread(new  Send(ds)).start();

                            new  Thread(new  Receive(dgs)).start();

                        } catch (SocketException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
            }
}

//发送信息的线程
class   Send   implements  Runnable{
           //Socket  服务
          private   DatagramSocket   ds;

          public   Send(DatagramSocket  ds){
              this.ds=ds;
          }
          public  Send(){}

            public  void  run(){
                         BufferedReader   br=new   BufferedReader(new    InputStreamReader(System.in));

                         String   len=null;

                         try {
                            while((len=br.readLine())!=null){
                                      if("over".equals(len)){
                                          break;
                                      }
                                      byte  []  by=len.getBytes();

                                      DatagramPacket   dp=new   DatagramPacket(by,by.length,InetAddress.getByName("localhost"),7777);

                                       ds.send(dp);
                            }

                            ds.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

            }

}

//接收信息的线程
class  Receive   implements  Runnable{
      private    DatagramSocket   ds;
      public  Receive(DatagramSocket   ds){
            this.ds=ds;
      }
      public  Receive(){}

      public  void   run(){
                      while (true) {

                        byte[] by = new byte[1024];

                        DatagramPacket dp = new DatagramPacket(by, by.length);

                        try {
                            ds.receive(dp);

                            String   ip=dp.getAddress().getHostAddress();

                           String  data= new  String(dp.getData(),0,dp.getLength());

                            System.out.println(ip+" : "+data);

                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                    }

      }

} 


package com.theima.www;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @author myluo
 *
 * 聊天程序
 *
 */
public class IODemo5 {
              public static void main(String[] args) {
                           try {
                            DatagramSocket   ds=new  DatagramSocket(6666);
                            DatagramSocket   dgs=new  DatagramSocket(7777);

                            new  Thread(new  Send1(ds)).start();

                            //new  Thread(new  Receive1(dgs)).start();

                        } catch (SocketException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
            }
}

//发送信息的线程
class   Send1   implements  Runnable{
           //Socket  服务
          private   DatagramSocket   ds;

          public   Send1(DatagramSocket  ds){
              this.ds=ds;
          }
          public  Send1(){}

            public  void  run(){
                         BufferedReader   br=new   BufferedReader(new    InputStreamReader(System.in));

                         String   len=null;

                         try {
                            while((len=br.readLine())!=null){
                                      if("over".equals(len)){
                                          break;
                                      }
                                      byte  []  by=len.getBytes();

                                      DatagramPacket   dp=new   DatagramPacket(by,by.length,InetAddress.getByName("localhost"),7777);

                                       ds.send(dp);
                            }

                            ds.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

            }

}

//接收信息的线程
class  Receive1   implements  Runnable{
      private    DatagramSocket   ds;
      public  Receive1(DatagramSocket   ds){
            this.ds=ds;
      }
      public  Receive1(){}

      public  void   run(){
                      while (true) {

                        byte[] by = new byte[1024];

                        DatagramPacket dp = new DatagramPacket(by, by.length);

                        try {
                            ds.receive(dp);

                            String   ip=dp.getAddress().getHostAddress();

                           String  data= new  String(dp.getData(),0,dp.getLength());

                            System.out.println(ip+" : "+data);

                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                    }

      }

} 

时间: 2024-11-05 12:34:01

黑马程序员—网络编程之UDP的相关文章

黑马程序员——网络编程之CTP传输

TCP传输 Socket和ServerSocket,实现了两台机器间的套接字端点,绑定本机IP地址.建立客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket. //客户端部分 public class ClientA { private String filePath ; public String getFilePath() {return filePath;} public void setFilePath(String filePath ) { thi

黑马程序员—网络编程之TCP(基础篇)

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 服务端:ServerSocket ss=new ServerSocket(10010); 获取Socket对象 Socket s=ss.accept(); 通过Socket对象获取输入输出流发送消息 客服端:Socket s=new Socket("localhost",10010); 通过Socket对象获取输入输出流发送消息 一 package com.itheima.cn; import jav

黑马程序员——Java网络编程之UDP传输

网络编程 网络模型 通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost 端口号 传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快.力求速度,不求数据的准确性.比如聊天软件,网络会议. TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低. S

黑马程序员 网络编程 UDP与TCP

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* 网络编程分为两种模式:TCP和UDP 连接互联网的计算机以亿计,为了唯一的标识出每台电脑,互联网就给每台电脑分配一个 唯一独立的ip地址,通过这个ip地址就可以进行计算机之间的数据交换 我们计算机交换的数据功能我们在java中把它封住成一个叫Socket的类, 简称套接字, 端口号:计算机数据的交换一般都是电脑上的程序来维护的,而电脑上又运

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

网络编程之UDP编程

网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送和接受数据报.值得注意的是:UDP编程必须先由客户端发出信息.一个客户端就是一封信,Socket相当于美国式邮筒(信件的收发都在一个邮筒中).端口与协议相关,所以TCP的30

java网络编程之UDP实例

package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), b

黑马程序员【网络编程之UDP协议】

UDP协议 UDP(User Datagram Protocol)也就是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范. 提到无连接数据传输,那我们首先想到的就是不可靠,数据丢失等等,那么在我们的日常软件中,UDP协议到底都应用在什么场景上呢?举一个大家比较熟悉的例子,就是我们平时所用的聊天软件,因为我们的聊天软件所传输的数据并非是重要数据. 通过ip和端口号,我们可以实现一个小的聊天软件,有兴趣的朋友可以在局域网内通过

黑马程序员——网络编程

1.网络通讯要素:(1)找到对方的IP地址(2)数据要发送到对方指定的应用程序上.为了标识这些应用程序,给小河蟹应用程序都用数字进行标识.为了方便称呼这些数字,称为端口(3)定义通信规则,这个规则称为协议,国际组织定义了通用协议TCP/IP 2.网络模型:应用层:HTTP,FTP等传输层:UDP,TCP等网际层:IP 3.UDP传输和TCP传输的区别:    UDP:将数据源和目的封装成数据包,不需要建立连接    每个数据报大小限制在64k内    因为无连接,是不可靠协议    不需要建立连