网络编程_UDP编程原理_发送类型_cs与bs区别JAVA187-188
2016-02-25 21:06
621 查看
来源:http://www.bjsxt.com/
一、S02E187_网络编程_UDP编程原理
二、S02E188网络编程_UDP编程、发送类型、cs与bs区别
一、S02E187_网络编程_UDP编程原理
package com.test.net.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; /** * UDP:以数据为中心,非面向连接,不安全,数据可能丢失,效率高 * 类:DatagramSocket,DatagramPacket * 客户端 * 1、创建客户端+端口,DatagramSocket+指定端口 * 2、准备数据:字节数组 * 3、打包(发送的地点及端口):DatagramPacket+服务器地址及端口 * 4、发送 * 5、释放 * * 思考:89.12 数据+类型 */ public class MyClient { public static void main(String[] args) throws IOException { //1、创建客户端+端口 DatagramSocket client = new DatagramSocket(6666);//端口可能被占用,报异常 //2、准备数据 String msg = "udp编程"; byte[] data = msg.getBytes(); //3、打包(发送的地点及端口) DatagramPacket packet = new DatagramPacket(data,0,data.length,new InetSocketAddress("LWT-PC",8888)); //4、发送 client.send(packet); //5、释放 client.close(); } }
package com.test.net.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 服务端 * 1、创建服务端+端口:DatagramSocket+指定端口 * 2、准备接收容器:字节数组,DatagramPacket封装 * 3、封装成包 * 4、接收数据 * 5、分析数据 * 6、释放资源 */ class MyServer { public static void main(String[] args) throws IOException { //1、创建服务端+端口 DatagramSocket server = new DatagramSocket(8888);//端口可能被占用,报异常 //2、准备接受容器 byte[] container = new byte[1024]; //3、封装成包DatagramPacket(byte[] buf, int length) DatagramPacket packet = new DatagramPacket(container,container.length); //4、接收数据 server.receive(packet);//阻塞式接收 //5、分析数据 byte[] data = packet.getData(); int len = packet.getLength(); System.out.println(new String(data,0,len)); //6、释放资源 server.close(); } }
二、S02E188网络编程_UDP编程、发送类型、cs与bs区别
package com.test.net.udp; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; /** * 发送double * 客户端 * 1、创建客户端+端口 * 2、准备数据,发送double-->字节数组,使用字节数组输出流和数据输出流 * 3、打包(发送的地点及端口) * 4、发送 * 5、释放 */ public class Client2SendDouble { public static void main(String[] args) throws IOException { //1、创建客户端+端口 DatagramSocket client = new DatagramSocket(6666);//端口可能被占用,报异常 //2、准备数据 double num = 89.12; byte[] data = convert(num); //3、打包(发送的地点及端口) DatagramPacket packet = new DatagramPacket(data,0,data.length,new InetSocketAddress("HELLOWORLD",8888)); //4、发送 client.send(packet); //5、释放 client.close(); } /** * double数据源-->字节数组,使用字节数组输出流和数据输出流 * @throws IOException */ public static byte[] convert(double num) throws IOException{ byte[] data = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.writeDouble(num); dos.flush(); //获取数据 data = baos.toByteArray(); dos.close(); return data; } }
package com.test.net.udp; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 处理成double * 服务端 * 1、创建服务端+端口 * 2、准备接收容器 * 3、封装成包 * 4、接收数据 * 5、分析数据,字节数组-->double * 6、释放资源 */ class Server2ReceiveDouble { public static void main(String[] args) throws IOException { //1、创建服务端+端口 DatagramSocket server = new DatagramSocket(8888);//端口可能被占用,报异常 //2、准备接受容器 byte[] container = new byte[1024]; //3、封装成包DatagramPacket(byte[] buf, int length) DatagramPacket packet = new DatagramPacket(container,container.length); //4、接收数据 server.receive(packet);//阻塞式接收 //5、分析数据 double data = convert(packet.getData()); System.out.println(data); //6、释放资源 server.close(); } /** * 字节数组-->double数据源,使用字节数组输入流和数据输入流 * @throws IOException */ public static double convert(byte[] data) throws IOException{ DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data)); double num = dis.readDouble(); dis.close(); return num; } }
相关文章推荐
- HTTP协议
- Android开发之旅:组件生命周期(一)出处:http://www.cnblogs.com/skynet/
- HDU3549 - Flow Problem(模板网络流 + Ford-Fulkerson算法)
- poj 1459 Power Network 多源多汇网络流
- 人工神经网络训练样本的选择方法
- Http状态码说明
- lighttpd-1.4.39 : mod_staticfile
- HTTP协议中,GET方法与POST方法比较
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- linux网络编程之shutdown() 与 close()函数详解
- iptables实现网络防火墙及地址转换
- iptables实现网络防火墙及地址转换
- tcp三次握手和time wait --- 转
- SSL中间人监测关键技术---SSL会话劫持
- HTTP相关
- iOS-原生网络请求
- 上下界网络流学习小记
- SDN软件定义网络
- iOS网络编程—NSURLSession的简单使用(iOS9)
- Node:Q与node http模块搭配