Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-09-2005, 17:12   #1
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
Problema con le JNI

Ho un problema con le JNI quando scrivo il codice sorgente C
questa è una parte del codice sorgente C (ci metto anche i numeri di riga per maggior chiarezza.

4. JNIEXPORT jint JNICALL Java_Ipktgen_Pktgen
5. (JNIEnv *, jobject obj, jint ttl, jlong d_ip, jintArray payload);
6. {

durante la compilazione mi da questo errore:

pktgen.c:5: error: syntax error before '{' token
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2005, 21:25   #2
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
togli il punto e virgola in fondo alla riga.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 13:00   #3
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
Quote:
Originariamente inviato da kingv
togli il punto e virgola in fondo alla riga.
hai ragione.
Ora sono riuscito a compilare tutto (non pensavo di riuscirci) mi rimangono solo un paio di warning:

pktgen.c: In function `main':
pktgen.c:112: warning: control reaches end of non-void function

credo che la parte di codice che da errore sua questa:

110. return 0;
111. }
112. int main() {}
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 13:48   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
anziché

int main() {}

prova a scrivere

int main() {
return 0;
}
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 14:41   #5
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
Posto tutto il codice:

#include <stdio.h>
#include <libnet.h>
#include "Ipktgen.h"


JNIEXPORT jint JNICALL Java_Ipktgen_Pktgen
(JNIEnv *env, jobject obj, jint ttl, jlong d_ip, jintArray payload)
{
struct input_struct
{
u_long s_ip; /* source ip address */
u_long d_ip; /* destination ip address */
u_char *data; /* ip payload */
u_short data_size; /* ip payload size */
}
input;

u_short h_lenght; /* header lenght */
short n; /* byte wrote */
char err_buf[LIBNET_ERRBUF_SIZE]; /* error buffer */

libnet_t *l; /* libnet context handler */

/* set default */
input.d_ip=0;
input.data_size=0;
input.data=NULL;

/* initialize libnet_t* */
if ((l=libnet_init(LIBNET_RAW4, /* injection type */
NULL, /* network interface */
err_buf))==NULL) /* error buffer */
{
fprintf (stderr, "Error: %s\n", err_buf);
return -1;
}


/* build ipv4 header */
if (libnet_build_ipv4
(
h_lenght+input.data_size,/* len */
0, /* tos */
0x200, /* id */
0, /* frag */
ttl, /* ttl */
IPPROTO_TCP, /* transport protocol */
0, /* sum */
input.s_ip, /* source address */
d_ip, /* destination address */
NULL, /* ip payload */
0, /* ip payload size */
l, /* libnet context */
0 /* we don't need ptag */
)==-1)
{

fprintf (stderr, "Error %s\n", libnet_geterror(l));
return 1;
}

printf ("* IP header builded\n");

/* write packet */
if ((n=libnet_write(l))==-1)
fprintf (stderr, "Error %s\n", libnet_geterror(l));

printf ("* Packet correctly wrote on wire: %d bytes\n", n);

/* destroy all */
libnet_destroy(l);

return 0;
}
int main() {}
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 17:43   #6
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
se vuoi che lo compiliamo ci serve anche il .h

il main toglilo non ne hai bisogno
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 20:36   #7
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
Quote:
Originariamente inviato da kingv
se vuoi che lo compiliamo ci serve anche il .h

il main toglilo non ne hai bisogno
Il .h è questo:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class Ipktgen */

#ifndef _Included_Ipktgen
#define _Included_Ipktgen
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Ipktgen
* Method: Pktgen
* Signature: (IJ[I)I
*/
JNIEXPORT jint JNICALL Java_Ipktgen_Pktgen
(JNIEnv *, jobject, jint, jlong, jintArray);

#ifdef __cplusplus
}
#endif
#endif
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2005, 00:35   #8
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
se tolgo il main mi da questo errore:
root@localhost codice]# gcc -Wall -o2 pktgen.c -o pktgen -lnet
/usr/lib/gcc/i586-mandrake-linux-gnu/3.4.1/../../../crt1.o(.text+0x18): In funct ion `_start':
../sysdeps/i386/elf/start.S:98: undefined reference to `main'
collect2: ld returned 1 exit status
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2005, 08:57   #9
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
devi compilare una shared library, non un eseguibile....

gcc pktgen.c -o pktgen.so -shared -I/usr/java/j2sdk1.4.2_04/include -I/usr/java/j2sdk1.4.2_04/include/linux
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2005, 10:09   #10
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
Quote:
Originariamente inviato da kingv
devi compilare una shared library, non un eseguibile....

gcc pktgen.c -o pktgen.so -shared -I/usr/java/j2sdk1.4.2_04/include -I/usr/java/j2sdk1.4.2_04/include/linux
Se scrivo così mi compila lo stesso:
gcc -c -Wall -o2 pktgen.c -o pktgen
non conosco bene tutti i parametri di gcc, cosa sambia scrivendo come ho fatto io?
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2005, 10:44   #11
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da ambuotiz
Se scrivo così mi compila lo stesso:
gcc -c -Wall -o2 pktgen.c -o pktgen
non conosco bene tutti i parametri di gcc, cosa sambia scrivendo come ho fatto io?

se usi '-c' come hai fatto tu non passa per lo stadio di linking.
per compilare compila, ma ottieni un file oggetto cui non puoi accedere da java via jni.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2005, 11:03   #12
ambuotiz
Bannato
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1130
ho un problema che non so come risolvere: devo passare un array di interi java al codice C. Per farlo ho scritto questo codice:

jsize len = (*env)->GetArrayLength(env, payload); //payload è il nome dell'array java di lunghezza len
jint *body = (*env)->GetIntArrayElements(env, payload, 0);
int cpayload [len]; //creo l'array C
int i;
for (i=0; i<len; i++)
{
cpayload[i] = body[i]; //copio i valori dell'array java nell'array C
}

input.d_ip=0;
input.data_size=len;
input.data=(u_char)*body; //questa riga mi da errore

l'errore che mi da il compilatore è questo:
warning: assignment makes pointer from integer without a cast

P.S. la variabile data è definita in questo modo:
u_char *data;
ambuotiz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
L'IA non ha portato quasi nessun benefic...
Sony LinkBuds Clip, gli auricolari open ...
La fibra è sempre più diff...
Arriva Vertiv CoolPhase PAM: raffreddame...
Chiamate cristalline e ANC evoluto a pre...
Adobe aggiorna Premiere e After Effects:...
AI Bundle, la novità dei driver A...
La roadster elettrica supportata da Xiao...
Netflix rivede l'offerta per Warner Bros...
Satya Nadella avverte: senza benefici co...
Anche secondo Andy Jassy, CEO di Amazon,...
Audi mostra la sua prima auto di Formula...
Evolve3 85 e 75: Jabra presenta le prime...
KIOXIA: 'il tempo degli SSD a basso cost...
Apple perde la sua posizione privilegiat...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:44.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v