代码全部来自:http://825635381.iteye.com/blog/2046882,在这里非常感谢了,我运行测试了下,非常正确,谢谢啊
服务端程序:
package udpServer; import java.io.*;
import java.net.*; /**
* 服务端
* 1、创建服务+端口
* 2、准备接受容器 byte数组
* 3、把接收容器封装成包 DatagramPacket
* 4、接受数据
* 5、分析数据 将字节数组转换成--------》各种类型数据
* 6、释放资源
*/
public class server { public static void main(String[] args) throws IOException {
//1.创建服务+端口
DatagramSocket server = new DatagramSocket(9999);
//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(); } public static double convert(byte[] data) throws IOException {
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data));
double num = dis.readDouble();
dis.close();
return num; }
}
客户端程序:
package udpClient; import java.io.*;
import java.net.*; /**
* 字符串数据类型的通信
* 1、创建客户端+端口
* 2、准备数据 字节数组
* 3、给数据打包 并指定发送的目的地和端口
* 4、发送
* 5、释放
*
* 思考 : 发送有类型的数据 怎么处理 如对象 数字 等等
* 1、创建客户端+端口
* 2、准备数据 把各种类型的数据转成--------》字节数组 ***************************************
* 3、给数据打包 并指定发送的目的地和端口
* 4、发送
* 5、释放
*/
public class client {
public static void main(String[] args) throws IOException {
//1.创建客户端+端口
DatagramSocket client = new DatagramSocket(8888);
//2.准备要发送的数据 字节数组
double d = 123.2345;
byte[] data = convert(d);
//3.给数据打包 并指定发送的目的地和端口 DatagramPacket(byte buf[], int length, InetAddress address, int port)
InetAddress address = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(data, data.length, address, 9999);
//4.发送
client.send(packet);
//5.释放
client.close();
} /**
* 字节数组 数据源 + Data输出流
* @param d
* @return
* @throws IOException
*/
public static byte[] convert(double d) throws IOException {
byte[] data = null; //写入数据
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeDouble(d);
dos.flush(); //获取数据
data = bos.toByteArray();
dos.close();
return data; } }
服务器端控制台显示出客户端发出数字:
123.2345