UdpプロトコルによるJsonデータ送受信
3377 ワード
本白は新会社に入社して最初の任務の需要を受け取って、メーカーはすでに1つのUdpリスニングプログラムを書いて、私にリスニングされたipアドレスとポートにいくつかのパラメータを送ってJsonの形式で、特に記録します!
1.まずテストコードを書き、サーバー側とクライアント側のデータ送受信を模擬する
Jsonデータに包装するにはjarパッケージを追加する必要があります.バージョンは自分で選択できます:gson-2.8.0.jar
2.問題点を記録する Jsonデータを梱包する際、addProperty(property,value)メソッドを利用し、property名を間違え、例えばmsgIdでmsgID と書く. IPは正しく書く メーカー側のデータ転送は私が書いたもう一つのhttpインタフェースを呼び出し、getかpostかは必ずメーカーと一致しなければならない
1.まずテストコードを書き、サーバー側とクライアント側のデータ送受信を模擬する
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
// ,
public class TestServer {
private DatagramSocket datagramSocket;
private final int port = 1234;// ,
public static void main(String[] args) throws SocketException {
new TestServer ().service();
}
public TestServer() throws SocketException {
datagramSocket = new DatagramSocket(port);
System.out.println(" ");
}
public String echo(String msg) {
return "echo:" + msg;
}
public void service() {
while (true) {
try {
DatagramPacket packet = new DatagramPacket(new byte[512], 512);
datagramSocket.receive(packet);
String msg = new String(packet.getData(), 0, packet.getLength());
// IP, ,
System.out.println(packet.getAddress() + "/" + packet.getPort() + " msg:" + msg);
// , Json ,
packet.setData(echo(msg).getBytes());
datagramSocket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
// ,
public class TestClient {
private String remoteHost = "xx.xx.xx.xx";// IP
private int remotePort = 1234;// ,
private DatagramSocket datagramSocket;
public TestClient() throws SocketException {
datagramSocket = new DatagramSocket();
}
public static void main(String[] args) throws SocketException {
new TestClient().talk();
}
public void talk() {
try {
InetAddress address = InetAddress.getByName(remoteHost);
Json
JsonObject object = new JsonObject();
object.addProperty("msgId", "1111");
object.addProperty("msgType", 111);
object2.addProperty("LightMode", 1);
object2.addProperty("Brightness", 10);
String content = object.toString();
System.out.println(content);//
//
byte[] buffer = content.getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, remotePort);
datagramSocket.send(packet);
//
DatagramPacket inputPacket = new DatagramPacket(new byte[512], 512);
datagramSocket.receive(inputPacket);
System.out.println(new String(inputPacket.getData(), 0, inputPacket.getLength()));
} catch (IOException e) {
e.printStackTrace();
} finally {
datagramSocket.close();
}
}
}
Jsonデータに包装するにはjarパッケージを追加する必要があります.バージョンは自分で選択できます:gson-2.8.0.jar
2.問題点を記録する