package com.bjpowernode.java_learning; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class D129_1_BroadcastTest { public static void main(String[] args) { new D129_Broadcast().send(); } } class D129_Broadcast { public void send() { String msg = "Hello,This is Broadcast Message"; //多播内容 int port = 6666; InetAddress group = null; MulticastSocket ms = null; try { group = InetAddress.getByName("224.1.1.1"); //建立多播地址 ms = new MulticastSocket(port); //建立多播套接字 ms.joinGroup(group); //将套接字加入多播地址 ms.setTimeToLive(1); //设置数据报发送范围为本地 DatagramPacket dp = new DatagramPacket(msg.getBytes(),msg.length(),group,port);//建立待发送的数据报 ms.send(dp); //发送数据报 }catch(IOException e) { System.out.println(e); }finally { ms.close(); //关闭套接字 } } }
package com.bjpowernode.java_learning; import java.net.DatagramPacket; public class D129_2_ReceiverTest { public static void main(String[] args) { new D129Receiver().receive(); } } class D129Receiver{ public void receive() { byte[] data = new byte[1024]; //数据缓存区 int port = 6666; //多播端口号 InetAddress group = null; MuticastSocket ms = null; try { group = InetAddress.getName("224.1.1.1"); //建立多播地址 ms = new MulticastSocket(port); //建立多播套接字 ms.joinGroup(group); //将套接字加入到多播地址 DatagramPacket dp = new DatagramPacket(data,data,length,group,port); //建立待接收的数据报 ms.receive(dp); //接收数据报 String msg = new String(dp.getData(),0,dp.getLength()); System.out.println("接收到的数据广播数据为:"+msg); }catch(IOException e) { System.out.println(e); }finally { ms.close(); //关闭套接字 } } }
总结:
(1)TCP和UDP之间的区别有哪些? TCP是面向链接的流传输控制协议,具备高可靠性,确保传输数据的正确性,有验证重发机制,保证传输过去的数据不会出现丢失或者乱序的状况。
UDP是无链接的数据服务,不对数据的完整性进行检查与修改,无需等待对方应答,会出现分组丢失,重复,乱序的状况,但传输效率高,实时性很好,适用于局域网内部传输。报文协议头简单。
(2)Socket的网络编程过程简述
首先是客户端,首先建立一个Socket实例,利用构造方法,绑定要通讯的地址和端口,而后经过套接字的I/O流进行通讯,最后通讯接收,调用成员方法close()来关闭Socket;
而后是服务器端,首先创建一个ServerSocket实例,并使用构造方法来绑定本地IP地址以及端口号,用于监听将会收到的TCP请求。而后作以下循环:调用成员方法accept()来获取客户端的链接,而且返回一个Socekt实例。为返回的Socket实例建立一个线程,而且使用返回的Socket实力的I\O流与客户端通讯;最后使用成员方法进行关闭。java