JAVA学习之基于UDP的通信
2017-03-22 20:39
162 查看
UDP是不需要连接的通信协议,需要两个端:发送端和接收端。UDP通信可以使用DatagramSocket的send和receive方法。下面通过代码实现UDP发送端和接收端互通。
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 ChatTest { public static void main(String[] args) throws SocketException { /* 通过UDP协议完成一个聊天程序 * 一个负责发送。一个负责接收。同时进行,多线程 * */ DatagramSocket send=new DatagramSocket();//DatagramSocket 表示是用来发送和接收数据报包的套接字。 DatagramSocket rece=new DatagramSocket(10062); new Thread(new Send(send)).start(); new Thread(new Receive(rece)).start(); } } class Receive implements Runnable{ private DatagramSocket ds; public Receive(DatagramSocket ds) { super(); this.ds = ds; } public void run(){ while(true){ //创建接收的数据包 byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf,buf.length);//DatagramPacket表示数据报包。数据报包用来实现无连接包投递服务。 //接收 try { ds.receive(dp); System.out.println("接收了"); } catch (IOException e) { e.printStackTrace(); } //获取数据 String ip=dp.getAddress().getHostAddress();//getHostAddress():返回 IP 地址字符串(以文本表现形式)。 String data = new String(dp.getData(),0,dp.getLength()); if("over".equals(data)){ System.out.println("离开聊天室"); } System.out.println(ip+":"+data); } } } class Send implements Runnable{ private DatagramSocket ds; public Send(DatagramSocket ds) { super(); this.ds = ds; } public void run(){ System.out.println("发送端启动"); //键盘录入 BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));//? //读取数据 String line = null; try { while((line=buffer.readLine())!=null){ //将数据变成字节数组,封装到数据包中 //将录入的数据封装到数据包中 byte[] buf = line.getBytes(); DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("10.104.4.196"),10062); ds.send(dp); System.out.println("发送结束"); if("over".equals(line)){ break; } } ds.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- java学习之路——基于UDP的Socket网络通信实例
- 黑马程序员_Java学习日记第八天--TCP/UDP通信、正则表达式
- [java]基于UDP的Socket通信Demo
- java网络通信基于UDP的几个步骤
- java 基于UDP的Socket网络通信
- Java 基于 UDP 实现 Socket中的多客户端通信
- java学习之路——基于TCP的Socket网络通信实例
- 【Java网络编程】基于 UDP 的聊天通信
- Java基于UDP实现服务器和多客户端之间的通信
- 【Java学习笔记】59:DatagramPack和DatagramSocket做UDP通信
- Java学习系列(十八)Java面向对象之基于UDP协议的网络通信
- Java 基于 UDP 实现 Socket中的多客户端通信
- JAVA学习之基于TCP的通信过程
- Java学习系列(十八)Java面向对象之基于UDP协议的网络通信
- Java学习系列(十八)Java面向对象之基于UDP协议的网络通信
- [分布式java]基于JavaAPI实现消息方式的系统间通信:UDP/IP+BIO
- Java 实现基于 UDP 的简单 socket 通信
- Java网络编程(基于TCP和UDP的通信实现)
- 基于Tcp&UDP协议的简单Socket通信实例(JAVA)
- java基于UDP协议的通信