8月3日----UDP通信
2015-08-03 19:50
344 查看
URL
类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。package com.lingzhuo.udpsocket; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; public class UrlTest { public static void main(String[] args) { try { URL url = new URL("http://www.baidu.com/");//读取百度首页的信息 BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));//以流的形式读取 //openStream() 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。 String line = br.readLine(); while(line!=null){ System.out.println(line); line = br.readLine(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { URL urlImg = new URL("http://pic23.nipic.com/20120831/8727628_093544523138_2.jpg"); File fileImg = new File("d:\\14.jpg");//将图片写入文件 if(!fileImg.exists()){ fileImg.createNewFile(); } InputStream is = urlImg.openStream(); OutputStream os = new FileOutputStream(fileImg); byte[] bytes = new byte[1024]; int i = is.read(bytes); while(i!=-1){ os.write(bytes,0,i); i=is.read(bytes); } os.flush(); os.close(); is.close(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
简单的UDP通信
类 DatagramSocket,此类表示用来发送和接收数据报包的套接字。类 DatagramPacket,此类表示数据报包。数据报包用来实现无连接包投递服务。
//发送端 package com.lingzhuo.udpsocket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; public class Send { public static void main(String[] args) { try { DatagramSocket send = new DatagramSocket(); while (true) { Scanner sca = new Scanner(System.in); String s = sca.next(); byte[] array = s.getBytes(); DatagramPacket packet = new DatagramPacket(array, array.length, InetAddress.getByName("192.168.0.54"),12316); send.send(packet); System.out.println("开始发送"+s); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //接收端 package com.lingzhuo.udpsocket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class Receive { public static void main(String[] args) { try { DatagramSocket receive = new DatagramSocket(12306); byte[] array = new byte[1024]; DatagramPacket packet = new DatagramPacket(array, 1024); while (true) { receive.receive(packet); byte[] get = packet.getData(); System.out.println("接收到的信息:" + new String(get)); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//用线程写的UDP通信,可以相互发送不限制次数 //发送的线程 package com.lingzhuo.udpThread; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; public class SendThread implements Runnable{ int port; DatagramSocket send; String name; public SendThread(DatagramSocket send,int port,String name) { // TODO Auto-generated constructor stub this.port = port; this.send =send; this.name = name; } @Override public void run() { // TODO Auto-generated method stub try { Scanner sca = new Scanner(System.in); while (true) { String s = sca.next(); byte[] array = s.getBytes(); DatagramPacket packet = new DatagramPacket(array, array.length, InetAddress.getByName("192.168.0.55"),port); send.send(packet); System.out.println("开始向"+name+"发送"+s); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //接收线程 package com.lingzhuo.udpThread; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class ReceiveThread implements Runnable{ int port; DatagramSocket receive; String name; public ReceiveThread(DatagramSocket receive,int port,String name) { // TODO Auto-generated constructor stub this.port=port; this.receive = receive; this.name = name; } @Override public void run() { // TODO Auto-generated method stub try { byte[] array = new byte[1024]; DatagramPacket packet = new DatagramPacket(array, 1024); while (true) { receive.receive(packet); byte[] get = packet.getData(); System.out.println(name+"接收到的信息:" + new String(get,0,packet.getLength())); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //通信的双方 package com.lingzhuo.udpThread; import java.net.DatagramSocket; import java.net.SocketException; public class UDPClient { public static void main(String[] args) { int port1 = 12345; int port2 = 12346; try { DatagramSocket sendClient = new DatagramSocket(); DatagramSocket receiveClient = new DatagramSocket(port2); SendThread thread1 = new SendThread(sendClient, port1,"Server:"); ReceiveThread thread2 = new ReceiveThread(receiveClient, port2,"Client:"); Thread t1 = new Thread(thread1); Thread t2 = new Thread(thread2); t1.start(); t2.start(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } package com.lingzhuo.udpThread; import java.net.DatagramSocket; import java.net.SocketException; public class UDPServer { public static void main(String[] args) { int port1 = 12345; int port2 = 12346; try { DatagramSocket sendServer = new DatagramSocket(); DatagramSocket receiveserver = new DatagramSocket(port1); SendThread thread1 = new SendThread(sendServer, port2,"Client:"); ReceiveThread thread2 = new ReceiveThread(receiveserver, port1,"Server:"); Thread t1 = new Thread(thread1); Thread t2 = new Thread(thread2); t1.start(); t2.start(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- HDU - 1864 最大报销额
- C语言笔记
- IOS使用纯C语言创建静态库
- 【HDOJ 1532】 Drainage Ditches(最大流模板)
- Scanner扫描器工具类
- [leedcode 189] Rotate Array
- 黑马程序员--java基础--反射
- 黑马程序员--java基础--IO流概述
- UVA10110完全平方数的约数为奇数个
- 正则表达式 - 自动生成器
- MyBatis知多少(26)调试
- 使用自带的JavaScriptSerializer序列化实体 指定的属性如何不序列化
- EXP-00008: ORA-01455: converting column overflows integer datatype
- java基础-集合
- 黑马程序员--java基础--多线程
- 关于一个int *ptr=(int *)(&a+1)问题的探讨
- HDU 1394 Minimum Inversion Number 最小逆序数 线段树
- selection does not contain a main type
- poj 2151 概率DP(水)
- php 反射