码迷,mamicode.com
首页 > 编程语言 > 详细

java_UDP

时间:2018-06-10 20:13:31      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:收信   highlight   byte   需要   数据   cvs   recv   内容   使用   

Socket编程:socket是计算机进程间通信的一种技术。socket包含api、通信的两端的端口和ip、通信的链接。


主要涉及的类:

  1. java.net.DatagramSocket  //代表通信建立的一个前提,相当于人或者时候氧气之于人的关系。
  2. java.net.DatagramPacket //代表通信使用的介质,相当于人从郑州到北京时候人之于交通工具的关系。
  3. java.net.InetAddress  //代表通信一端的IP地址。

服务端:

//服务端建立socket的时候要指定端口,但是客户端建立socket的时候不指定端口。

DatagramSocket server = new DatagramSocket(9876);


byte
[] recvBuf = new byte[100];
//udp数据包的创建需要指定:要接收活发送的内容所在的数组(缓冲区)、缓冲区的大小、数据包的IP、数据包的端口。
//显然当数据包用来接收的时候不指定数据包的IP、数据包的端口 DatagramPacket recvPacket
= new DatagramPacket(recvBuf , recvBuf.length);

//DatagramSocket接收和发送的一定是DatagramPacket对象的实例
server.receive(recvPacket);



String recvStr
= new String(recvPacket.getData() , 0 , recvPacket.getLength()); System.out.println("Hello World!" + recvStr);

 


 

 

客户端:

//客户端要发送数据包到服务端,创建socket不需要指定端口
DatagramSocket client = new DatagramSocket(); String sendStr = "Hello! I‘m Client"; byte[] sendBuf; sendBuf = sendStr.getBytes(); InetAddress addr = InetAddress.getByName("127.0.0.1"); int port = 9876;
//数据包的创建,因为是要发送的数据包,所以除了缓冲区内容、缓冲区大小,还要考虑服务端的IP和端口。 DatagramPacket sendPacket
= new DatagramPacket(sendBuf ,sendBuf.length , addr , port);
//socket发送的一定是DatagramPacket的实例 client.send(sendPacket);

 

在这之后:

//在收成功DatagramPacket对象之后的DatagramSocket对象可以通过接受的DatagramPacket实例获取发送者的信息,然后对发送者进行回话。

//在发成功DatagramPacket对象之后DatagarmSocket实力可以直接阻塞接收对方传来的信息。

  

 


 

 

在UDP编程中,发送、接收信息的时候缓冲区都是用byte数字来表示的,所以编码时候要注意一下。

 

java_UDP

标签:收信   highlight   byte   需要   数据   cvs   recv   内容   使用   

原文地址:https://www.cnblogs.com/luohaonan/p/9164075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!