黑马程序员 ---网络编程 UDP
2013-10-08 10:14
429 查看
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
UDP
• 将数据及源和目的封装成数据包中,不需要建立连接
• 每个数据包的大小在限制在64k内
• 因无连接,是不可靠协议
• 不需要建立连接,速度快
TCP
• 建立连接,形成传输数据的通道。
• 在连接中进行大数据量传输
• 通过三次握手完成连接,是可靠协议
• 必须建立连接,效率会稍低
UDP传输:
----------------------
//IP Test import java.net.*; class IPDemo { public static void main(String[] args) throws Exception { /*InetAddress i = InetAddress.getLocalHost(); System.out.println(i.toString()); System.out.println(i.getHostName()); System.out.println(i.getHostAddress()); InetAddress i1 = InetAddress.getByName("www.baidu.com"); System.out.println(i1.getHostName()); System.out.println(i1.getHostAddress());*/ InetAddress[] ia = InetAddress.getAllByName("www.baidu.com"); for(InetAddress ii:ia) { System.out.println(ii.toString()); } } }
UDP
• 将数据及源和目的封装成数据包中,不需要建立连接
• 每个数据包的大小在限制在64k内
• 因无连接,是不可靠协议
• 不需要建立连接,速度快
TCP
• 建立连接,形成传输数据的通道。
• 在连接中进行大数据量传输
• 通过三次握手完成连接,是可靠协议
• 必须建立连接,效率会稍低
UDP传输:
/* 需求:通过udp传输方式,将一段文字数据发送出去。, 定义一个udp发送端。 思路: 1,建立updsocket服务。 2,提供数据,并将数据封装到数据包中。 3,通过socket服务的发送功能,将数据包发出去。 4,关闭资源。 */ import java.net.*; class UdpSend { public static void main(String[] args)throws Exception { DatagramSocket ds = new DatagramSocket(); byte[] buf = "你好 哈哈".getBytes(); DatagramPacket dp = new DatagramPacket (buf,buf.length, InetAddress.getByName("172.27.76.115"),10000); ds.send(dp); ds.close(); } } /* 需求: 定义一个应用程序,用于接收udp协议传输的数据并处理的。 定义udp的接收端。 思路: 1,定义udpsocket服务。通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识。 方便于明确哪些数据过来该应用程序可以处理。 2,定义一个数据包,因为要存储接收到的字节数据。 因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。 3,通过socket服务的receive方法将收到的数据存入已定义好的数据包中。 4,通过数据包对象的特有功能。将这些不同的数据取出。打印在控制台上。 5,关闭资源。 */ class UdpReceive { public static void main(String[] args)throws Exception { DatagramSocket ds = new DatagramSocket(10000); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); System.out.println("ip:"+ip); System.out.println("data:"+data); System.out.println("port:"+port); ds.close(); } }
//键盘录入方式数据 import java.net.*; import java.io.*; class UdpSend2 { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(); BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; while ((line=bufr.readLine())!=null) { if ("886".equals(line)) break; byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("172.27.76.115"),888); ds.send(dp); } ds.close(); } } class UdpReceive2 { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(888); while (true) { byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); //System.out.println("ip:"+ip); System.out.println("data:"+data); //System.out.println("port:"+port); } } }
相关文章推荐
- 黑马程序员--网络编程之UDP
- 『黑马程序员』---java--网络编程--网络编程概念+UDP基础
- 黑马程序员----------UDP网络编程
- 黑马程序员_网络编程TCP/UDP原理及其流程比较(java)
- 黑马程序员_java基础(12)网络编程之UDP
- 黑马程序员_网络编程UDP与TCP
- 黑马程序员_java网络编程——UDP传输和TCP传输
- 黑马程序员-java基础网络编程(UDP)
- 黑马程序员————awt 网络编程(UDP TCP)(day25)
- 黑马程序员:网络编程之UDP传输
- 【黑马程序员】黑马入学准备篇:网络编程之 TCP、UDP和Socket综合实例
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- 黑马程序员:网络编程之UDP传输
- 黑马程序员_网络编程学习笔记-->代码主要是对UDP协议的讲解
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- 黑马程序员___网络编程(TCP和UDP)
- 黑马程序员---网络编程(UDP、TCP)
- 黑马程序员-网络编程UDP
- 黑马程序员_Java基础_网络编程_UDP传输协议编程,控制台聊天程序
- 黑马程序员--10.网络编程--04.【UDP_键盘录入】【UDP_聊天】