try {
pw=new PrintWriter(client.getOutputStream());
pw.println(msg);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
UDP 协议:
是一种基于不稳定连接的通信协议,它传输数据是以包的形式传输,如果是字符则将字符转换成包 ,再发送包,如果是流,则将流读出来转换成包,UDP协议发送数据在接收方不能够保证数据的接收顺序与是否接收。 UDP协议发送和接收数据需要构建一个数据包,需要用到DatagramPacket和DatagramSocket 前者用于构建数据包,后者则用于发送和接收数据报。
数据报的构建 :采用DatagramPacket来构建数据 报,那么我们就需要去调用DatagramPacket的构造器 构建数据包
DatagramSocket 的构造器 构建数据包的套接字
飞秋在UDP协议中数据报的格式:
1:100:用户名:密码:状态码:传输文本
在UDP协议中发送的数据需要按照以上的格式才能够发送成功。
现在给指定ip的客户端遵循UDP协议发送信息, 就给ip客户端的飞秋发送一条信息过去
package com.ibm.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class SendFQ {
public static void main(String[] args) {
//创建数据包的socket
try {
DatagramSocket ds=new DatagramSocket();
//创建一个byte数组
byte[] b=newbyte[512];
//将HelloWorld传递到ip为38上面去
String str="1:100:用户名:密码:1:helloworld";
b=str.getBytes();
//取到ip为38的InetAddress对象
InetAddress ia=InetAddress.getByName("192.168.0.179");
//创建数据包对象
DatagramPacket dp=new DatagramPacket(b, b.length, ia, 2425);
//发送数据报
ds.send(dp);
// 信息如果多次发送,每次发送数据的时间间隔
Thread.sleep(1000);
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//飞秋的协议时遵循的是UDP协议,端口号为2425,每次发送的数据需要按照一定的格式
//将发送的数据拼接成字符串转换成btte型数组,再将数组 数组长度 ip地址 端口号打包成数据报
//发送数据报
}
DatagramPacket
DatagramSocket接收发送数据实例
package com.ibm.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class SendServer {
public static void main(String[] args) {
try {
DatagramSocket ds = new DatagramSocket();
String str = "helloworld";
int len=str.getBytes().length;
byte[] b =new byte[len];
b = str.getBytes();
InetAddress ia = InetAddress.getByName("192.168.0.179");
DatagramPacket dp = new DatagramPacket(b, b.length, ia, 9009);
ds.send(dp);
Thread.sleep(500);
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package com.ibm.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public