Я довольно новичок в программировании на Java и C, и мне нужна помощь.Итак, у меня есть приложение C, которое отправляет структуры по UDP:
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char**argv)
{
int sockfd,n;
struct sockaddr_in servaddr,cliaddr;
struct dataType {
char name[4];
unsigned short did;
unsigned short sid;
unsigned short type:4,pri:2,cb:2,flags:8;
unsigned char pblock;
unsigned char tblock;
unsigned short mess;
unsigned int window:24;
};
struct dataType sample_header;
strcpy(sample_header.name,"TEST");
sample_header.did=23;
sample_header.sid_id=1;
sample_header.type=1;
sample_header.pri=01;
sample_header.cb=1;
sample_header.flags=18;
sample_header.pblock=10;
sample_header.tblock=20;
sample_header.mess3;
sample_header.window=123890;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=inet_addr(argv[1]);
servaddr.sin_port=htons(6120);
sendto(sockfd, (char *)&sample_header, (sizeof(struct dataType)),0,(struct sockaddr *)&servaddr,sizeof(servaddr));
}
Теперь мне нужно иметь возможность получать эти данные по UDP в Java и заполнять объект этими значениями.Я могу получить первую строку (имя), но не знаю, как поступить с оставшимися элементами.
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.nio.*;
public class UDPReceive {
public static void main(String args[]) {
try {
int port = 6120;
DatagramSocket dsocket = new DatagramSocket(port);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while (true) {
dsocket.receive(packet);
byte[] data = packet.getData();
String msg1 = new String(data, 0, 5);
System.out.println("Here is SOME :" + msg1);
packet.setLength(buffer.length);
}
} catch (Exception e) {
System.err.println(e);
}
}
}
Я посмотрел на буферы протокола Google, но, очевидно, он требует изменений с обеих сторон.Мне также нужно иметь возможность в конечном итоге отправить эти данные из Java-объекта в UDP и обратно в C-структуру.
Большое спасибо.