网络编程之UDP程序数据包的发送
2011-06-06 11:44
531 查看
UDP是面向无连接的通信,它发送的是数据包,效率高,但是他不保证通信的可靠,也就是说他不保证数据包能完全到达目的主机。
写一实例程序来体验UDP通信
在写示例程序之前首先应查阅API文档,了解UDP通信需要使用什么类、什么方法。
UDP通信需要的类:DatagramSocket, DatagramPacket
DatagramSocket
表示发送数据包和接受数据包的套接字, 所以在发送发和接受方都要使用这个套接字来收发数据包。
DatagramPacket数据包,用来表示要发送的数据包,在数据包类中有方法:
构造方法(常用):
Sender代码:
Receiver端代码:
这样Sender就将数据包发送给了Receiver了。
写一实例程序来体验UDP通信
在写示例程序之前首先应查阅API文档,了解UDP通信需要使用什么类、什么方法。
UDP通信需要的类:DatagramSocket, DatagramPacket
DatagramSocket
表示发送数据包和接受数据包的套接字, 所以在发送发和接受方都要使用这个套接字来收发数据包。
DatagramPacket数据包,用来表示要发送的数据包,在数据包类中有方法:
构造方法(常用):
public DatagramPacket (byte[] buf, int length) 用来就收数据包的大小 public DatagramPacket (byte[] buf, int length, InetAddress address, int port) 用来指定数据包发送的大小和目的主机的地址和端口, 总结:一个是用来接受数据包,一个是用来发送数据包 普通方法: public InetAddress getAddress () 获得发送方的IP地址 public byte[] getData () 获得就收数据包的缓冲区大小 public int getLength () 获得实际数据包的长度 InetAddress类:可以理解java为IP封装的类 其中有个方法常用: public static InetAddress getByName (String host) 给定主机名返回IP地址 实例程序代码:
Sender代码:
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class Sender { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket("www.csdn.net".getBytes(), "www.csdn.net".length(), InetAddress.getByName("127.0.0.1"), 3000); ds.send(dp); ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Receiver端代码:
package cn.itcast.socket.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class Receiver { public static void main(String[] args) { try { DatagramSocket ds = new DatagramSocket(3000); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); ds.receive(dp); System.out.println(dp.getData().length); System.out.println(dp.getSocketAddress()); System.out.println(ds.getInetAddress()); String data = " form :" + dp.getAddress().getHostAddress() + new String(dp.getData(), 0, dp.getLength()); System.out.println(data); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
这样Sender就将数据包发送给了Receiver了。
相关文章推荐
- Linux 网络编程——原始套接字实例:发送 UDP 数据包
- 网络编程——设计一个发送TCP数据包的程序
- 网络编程——设计一个发送TCP数据包的程序
- 【Linux网络编程】原始套接字实例:发送 UDP 数据包
- Linux 网络编程——原始套接字实例:发送 UDP 数据包
- [Linux网络编程]UDP编程--UDP通信程序服务器端
- 5、用户数据报发送 基于UDP 协议的网络程序
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- udp网络程序-发送、接收数据
- [Linux网络编程]UDP编程--UDP通信程序客户端
- 简单的网络通信程序,客户端发送hello,server 服务器反馈 ok UDP
- 【网络编程2】网络编程基础-发送ICMP包(Ping程序)
- Java网络编程(UDP协议-聊天程序)
- 网络编程之UDP网络程序
- 【Java网络编程】UDP协议实例——简单的在线聊天程序
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- 基于UDP协议的网络编程(使用DatagramSocket发送接收数据)
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- 网络编程_UDP协议发送和接收数据图解
- 【Python】udp网络程序-发送、接受数据