Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java与Python之间的UDP协议_Java_Python_Sockets_Udp - Fatal编程技术网

java与Python之间的UDP协议

java与Python之间的UDP协议,java,python,sockets,udp,Java,Python,Sockets,Udp,我正在尝试使用UDP通过python将浮点数组发送到java。我可以将数组从python发送到java,但无法将数组从python发送到java。但是,我可以使用pack('您的python客户端只发送一个浮点数。有关如何执行此操作的详细信息,请参阅。 import socket import sys import base64 import struct import array import pickle from struct import * # Create a UDP socke

我正在尝试使用UDP通过python将浮点数组发送到java。我可以将数组从python发送到java,但无法将数组从python发送到java。但是,我可以使用
pack('您的python客户端只发送一个浮点数。有关如何执行此操作的详细信息,请参阅。
import socket
import sys
import base64
import struct
import array
import  pickle
from struct import *

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

server_address = ('localhost', 9876)
message = pickle.dumps(['5','5','5','5','5'])
#print message
data = pack('<f',5)

while 1:
    sent = sock.sendto(data, server_address)
    data, server = sock.recvfrom(4096)
    #print data
    print array.array('d',data )
import java.io.*;
import java.net.*;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;


class UDPServer
{
    static DatagramSocket serverSocket;
    static int packetSize;
    static  int numFloats;
    static  ByteOrder be;
    static byte[] receiveData;
    static byte[] sendData;
    static  float[] msg;

    public static void main(String args[]) throws Exception
    {

        serverSocket = new DatagramSocket(9876);
        packetSize = 64;
        numFloats = (packetSize / 4) - 1;
        be = ByteOrder.LITTLE_ENDIAN;

        receiveData = new byte[packetSize];
        sendData = new byte[packetSize];

        ByteBuffer.wrap(sendData).order(be).putInt(0, 2).array();
        msg = new float[]{2,2,2,2,2,2,2,2};
        printArray(msg);
        sendData = command(37, msg);
        printArray(parse(sendData));

        while(true)
        {
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            serverSocket.receive(receivePacket);
            //System.out.println(receivePacket.getData());
            printArray(parse(receivePacket.getData()));

            InetAddress IPAddress = receivePacket.getAddress();
            int port = receivePacket.getPort();
            //   sendData = msg.getBytes();
            DatagramPacket sendPacket =
            new DatagramPacket(sendData, sendData.length, IPAddress, port);
            serverSocket.send(sendPacket);
        }
    }

    static  byte[] command(int idOfCommand, float[] values)
    {
        byte[] message = new byte[packetSize];
        ByteBuffer.wrap(message).order(be).putInt(0, idOfCommand).array();
        for (int i = 0; i < numFloats && i < values.length; i++) {
            int baseIndex = (4 * i) + 4;
            ByteBuffer.wrap(message).order(be).putFloat(baseIndex, values[i]).array();
        }
        return message;
    }

    static float[] parse(byte[] bytes) {
        float[] returnValues = new float[numFloats];

        // println "Parsing packet"
        for (int i = 0; i < numFloats; i++) {
            int baseIndex = (4 * i) + 4;
            returnValues[i] = ByteBuffer.wrap(bytes).order(be).getFloat(baseIndex);
        }

        return returnValues;
    }

    static void printArray(float[] anArray) {
        System.out.println(Arrays.toString(anArray));
    }

}