Java通过套接字高频发送短字符串

Java通过套接字高频发送短字符串,java,sockets,networking,udp,packet,Java,Sockets,Networking,Udp,Packet,我正在尝试制作一个控制DMX通道的应用程序。为此,我有一个ESP8266,它接受一个字符串作为输入,如“2.255”,其中第一个整数是DMX通道,第二个整数是值 对于我的PC,我编写了一个方法,首先构建字符串,然后通过套接字将其感测到ESP8266的IP地址 for(DMXChannel c : list){ if(lastvalue.get(c.getChannelID() - 1) != c.getValue()){ try { String msg =

我正在尝试制作一个控制DMX通道的应用程序。为此,我有一个ESP8266,它接受一个字符串作为输入,如“2.255”,其中第一个整数是DMX通道,第二个整数是值

对于我的PC,我编写了一个方法,首先构建字符串,然后通过套接字将其感测到ESP8266的IP地址

for(DMXChannel c : list){
if(lastvalue.get(c.getChannelID() - 1) != c.getValue()){

     try {
            String msg = c.getChannelID() + "." + c.getValue();;
            DatagramSocket clientSocket = new DatagramSocket();

            InetAddress ipaddr = InetAddress.getByName(ip); //IP Address is "192.168.4.1"

            byte[] sendData = new byte[1024];
            sendData = msg.getBytes();
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, ipaddr, 8888);

            clientSocket.send(sendPacket);
            clientSocket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

     }
}
这很好,但我有一个问题,当我试图做一个褪色。这段代码的频率似乎太慢了


有人有“更快”的解决方案吗?

以下是一些可以加快代码速度的方法:

  • 不要为IP地址调用
    getByName
    。这涉及DNS,但IP地址不需要DNS。而是调用
    getByAddress
    。如果确实需要调用getByName,只需调用一次并缓存答案

  • 不要每次打开、关闭、重新打开插座等。把它打开就行了