Java学习日志(23-2-网络编程-UDP传输)
2016-10-21 00:00
357 查看
UDP传输
DatagramSocket与DatagramPacket
建立发送端、接收端
建立数据包
调用Socket的发送接收方法
关闭Socket
*发送端与接收端是两个独立的运行程序
UDP发送端
UDP接收端
UDP键盘录入(实则分为两个class运行)
UDP练习-聊天程序
DatagramSocket与DatagramPacket
建立发送端、接收端
建立数据包
调用Socket的发送接收方法
关闭Socket
*发送端与接收端是两个独立的运行程序
UDP发送端
// UDP发送端 public static void UDPsend()throws Exception{ // 通过DatagramSocket创建UDP服务 DatagramSocket ds=new DatagramSocket(); // 确定数据,并封装 byte[]buf="udp".getBytes(); DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.1"),10000); // 通过socket服务发送,通过seng(); ds.send(dp); // 关闭资源 ds.close(); }
UDP接收端
// UDP接收端 public static void UDPrece()throws Exception{ // 创建socket服务,建立端点 DatagramSocket dsr=new DatagramSocket(); // 定义数据包,用于存储 byte[]bufr=new byte[1024]; DatagramPacket dpr=new DatagramPacket(bufr,bufr.length); // 通过服务的receive()将收到的数据存入包中 dsr.receive(dpr); // 通过数据包的方法获取其中的数据 String ip=dpr.getAddress().getHostAddress(); String data=new String(dpr.getData(),dpr.getLength()); int port=dpr.getPort(); System.out.println(ip+"::"+data+"::"+port); // 关闭资源 dsr.close(); }
UDP键盘录入(实则分为两个class运行)
import java.net.*; import java.io.*; class UDPDemo2{ public static void main(String[] args)throws Exception{ UDPsend(); } public static void UDPsend()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("192.168.1.1"),10001); ds.send(dp); } ds.close(); } public static void UDPrece()throws Exception{ DatagramSocket dsr=new DatagramSocket(10001); while(true){ byte[]bufr=new byte[1024]; DatagramPacket dpr=new DatagramPacket(bufr,bufr.length); dsr.receive(dpr); String ip=dpr.getAddress().getHostAddress(); String data=new String(dpr.getData(),0,dpr.getLength()); System.out.println(ip+"::"+data); } } }
UDP练习-聊天程序
/* 编写一个聊天程序 有收数据的部分和发数据的部分 两部分同时执行,需要用到多线程技术 因为收发动作不一致,因此要定义两个run(),并且封装到不同的类中 */ import java.net.*; import java.io.*; class ChatDemo{ public static void main(String[] args)throws Exception{ DatagramSocket sendsocket=new DatagramSocket(); DatagramSocket recesocket=new DatagramSocket(10002); new Thread(new Send(sendsocket)).start(); new Thread(new Rece(recesocket)).start(); } } class Send implements Runnable{ private DatagramSocket ds; public Send(DatagramSocket ds){ this.ds=ds; } public void run(){ try{ 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("192.168.1.1"),10001); ds.send(dp); } } catch(Exception e){ throw new RuntimeException("发送端失败"); } } } class Rece implements Runnable{ private DatagramSocket ds; public Rece(DatagramSocket ds){ this.ds=ds; } public void run(){ try{ 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()); System.out.println(ip+"::"+data); } } catch(Exception 3ff0 e){ throw new RuntimeException("接收端失败"); } } }
相关文章推荐
- Java学习日志(23-1-网络编程-概述)
- Java学习日志(23-3-网络编程-TCP)
- JAVA基础 day25 网络编程 IP类 UDP,TCP传输学习 简易聊天工具 TCP并发学习
- Java UDP 网络编程 示例 -Java学习笔记(30)
- java网络编程学习笔记之一(TCP/IP协议与UDP协议的区别和认识)
- [学习笔记]Java网络编程之UDP通讯
- 19. JAVA 网络编程 Part 1 (IP与InetAddress类、URL与URLConnection类、URLEncoder与URLDecoder类、TCP&UDP)---- 学习笔记
- 【Java学习笔记】23.网络编程--Socket
- Java 网络编程 TCP vs UDP -Java学习笔记(31)
- JAVA基础学习之UDP网络编程
- [学习笔记]Java网络编程之UDP通讯
- 黑马程序员——Java网络编程之UDP传输
- 浅析Java网络编程之UDP传输(一)
- 学习笔记 Java_网络编程_UDP 2014.7.20
- UDP传输----java网络编程(1)
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- Lesson_for_java_day22--java的网络编程(IP、URL、UDP传输)
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- Java学习日志(24-1-网络编程-自定义服务端与客户端)