Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-06-2006, 15:54   #1
osa
Senior Member
 
L'Avatar di osa
 
Iscritto dal: Dec 2004
Città: Napoli
Messaggi: 342
[C] Problemi con i Socket

Salve sto realizzando un piccolo programmino con i socket (è la prima volta che li uso) mi viene sempre riportato in runtime il seguente errore:
Codice:
: Socket operation on non-socket
Questa è la parte di codice incriminata:
Codice:
 int get_connection(int s){
     81
     82 struct sockaddr_in isa;
     83 int i,t;
     84
     85 i=sizeof(isa);
     86
     87 if (( t=accept(s,(struct sockaddr *)&isa,(socklen_t *)&i) ) < 0){
     88      printf("errno=%s\n",strerror(errno));
     89         return -1; //si mette in attesa di una connessione
     90 }
     91
     92 return(t);
Il socket s che viene passato alla funzione è stato creato precedentemente con socket e con bind. Ho notato che il file descriptor del socket s è sempre 0.
__________________
Il futuro lo conoscerete quando sarà arrivato, prima di allora dimenticatelo.
(Eschilo)
osa è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2006, 11:49   #2
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
ma t lo usi come socket?
questo è il man della accept:
http://www.hmug.org/man/2/accept.php
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2006, 12:22   #3
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Sembra proprio che s non sia un socket valido.
L'hai aperto correttamente? Fatto il bind? Listen?

Controlla e facci sapere

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2006, 18:06   #4
osa
Senior Member
 
L'Avatar di osa
 
Iscritto dal: Dec 2004
Città: Napoli
Messaggi: 342
Quote:
Originariamente inviato da sottovento
Sembra proprio che s non sia un socket valido.
L'hai aperto correttamente? Fatto il bind? Listen?

Controlla e facci sapere

High Flying
Sottovento
Ecco come ho aperto il socket:

Codice:
int establish(u_short port){

char myname[MAXHOSTNAME+1];
int s;
struct sockaddr_in sa;//struttura di AF_INET
struct hostent *hp; //struttura restituita da gethostbyname

bzero(&sa,sizeof(struct sockaddr_in) );
gethostname(myname,MAXHOSTNAME);
printf("Host: %s\n",myname);
hp=gethostbyname(myname);

  if ( hp == NULL) return -1;

sa.sin_family=hp->h_addrtype; //riempo la strutta struct sockaddr_in
sa.sin_port=htons(port);

 if(  (s=socket(PF_INET,SOCK_STREAM,0)) < 0)
    return -1;

//sa2=(struct sockaddr)
if ( bind(s,(struct sockaddr *)&sa,(socklen_t) sizeof (sa)) < 0) {
   close(s);
   return(-1);
   }

listen(s,3);
return(s);

}
__________________
Il futuro lo conoscerete quando sarà arrivato, prima di allora dimenticatelo.
(Eschilo)

Ultima modifica di osa : 04-06-2006 alle 11:16.
osa è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2006, 15:40   #5
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Mi era scappata la parte in cui dicevi che il descrittore e' sempre zero.
Per caso hai chiuso lo standard input, o fai partire l'applicazione mediante una pipe o qualcosa del genere?
Come ben sai, in caso di funzionamento "normale" (standard input/output/error aperti), la funzione socket() non puo' riportarti un descrittore pari a zero. Questo ovviamente ti fa generare l'errore che ti ritrovi nell'accept.

Ho dato un'occhiata al codice e sembra tutto in ordine. Ovviamente ci deve essere una gabola, da qualche parte, altrimenti funzionerebbe (non riesco a credere agli incantesimi informatici).

Proviamo a creare una checklist per trovare un possibile errore:
1 - la variabile s e' valorizzata SOLO dalla funzione socket(). Qualsiasi altra valorizzazione potrebbe portare errore. Confermi?

2 - la funzione establish() potrebbe terminare con un errore. Hai messo il controllo?

3 - Hai altre variabili con lo stesso nome che potrebbero, nel blocco di programma in questione, "oscurare" la tua variabile? (magari credi di vedere quella e stai guardando un'altra)...

4 - Il vettore myname[MAXHOSTNAME+1] e' sufficiente a contenere il nome dell'host + il corrispondente terminatore di stringa?

Controlla bene il punto 3, mi sembra il piu' probabile. Se non trovi niente, proviamo a creare un'altra checklist

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2006, 22:30   #6
osa
Senior Member
 
L'Avatar di osa
 
Iscritto dal: Dec 2004
Città: Napoli
Messaggi: 342
Quote:
Originariamente inviato da sottovento
Mi era scappata la parte in cui dicevi che il descrittore e' sempre zero.
Per caso hai chiuso lo standard input, o fai partire l'applicazione mediante una pipe o qualcosa del genere?
Come ben sai, in caso di funzionamento "normale" (standard input/output/error aperti), la funzione socket() non puo' riportarti un descrittore pari a zero. Questo ovviamente ti fa generare l'errore che ti ritrovi nell'accept.

Ho dato un'occhiata al codice e sembra tutto in ordine. Ovviamente ci deve essere una gabola, da qualche parte, altrimenti funzionerebbe (non riesco a credere agli incantesimi informatici).

Proviamo a creare una checklist per trovare un possibile errore:
1 - la variabile s e' valorizzata SOLO dalla funzione socket(). Qualsiasi altra valorizzazione potrebbe portare errore. Confermi?

2 - la funzione establish() potrebbe terminare con un errore. Hai messo il controllo?

3 - Hai altre variabili con lo stesso nome che potrebbero, nel blocco di programma in questione, "oscurare" la tua variabile? (magari credi di vedere quella e stai guardando un'altra)...

4 - Il vettore myname[MAXHOSTNAME+1] e' sufficiente a contenere il nome dell'host + il corrispondente terminatore di stringa?

Controlla bene il punto 3, mi sembra il piu' probabile. Se non trovi niente, proviamo a creare un'altra checklist

High Flying
Sottovento
Ti ringrazio per l'aiuto, ho rivisto il codice e leggendo la tua cecklist non ho trovato nulla che viola i 4 punti. Non ho chiuso lo stdin e non uso pipe, il programma è un server che fa l'eco. Riceve dal client una stringa e la rimanda allo stesso client. Ora ti mando il main:
Codice:
int main(int argc,char  **argv){

int t,s;
int port=atoi(argv[1]);

   if (s=establish( (u_short)port ) < 0){
   perror("establihs\n"); exit(2);}
   printf("Socket fd=%d\n",s);
  
   while (1){

   if( (t=get_connection(s) ) < 0 ){
       perror("get_connection\n"); exit(0);}
       
   switch(fork()) {
   case -1:
    perror("fork");
    close(s);
    close(t);
    exit(1);

   case 0: //figlio
     eco(t);
     exit(0);
   
   default : //padre
     close(t);
     continue;
}
}
}
__________________
Il futuro lo conoscerete quando sarà arrivato, prima di allora dimenticatelo.
(Eschilo)
osa è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2006, 19:34   #7
osa
Senior Member
 
L'Avatar di osa
 
Iscritto dal: Dec 2004
Città: Napoli
Messaggi: 342
ho trovato ecco l'errore non ci sono le parentesi:

Codice:
if (s=establish( (u_short)port ) < 0)
__________________
Il futuro lo conoscerete quando sarà arrivato, prima di allora dimenticatelo.
(Eschilo)
osa è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 10:40   #8
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da osa
ho trovato ecco l'errore non ci sono le parentesi:

Codice:
if (s=establish( (u_short)port ) < 0)
Complimenti, era davvero difficile da trovare. Ho controllato il codice diverse volte e mi era clamorosamente scappato.

Potremmo formulare la proposta di avere una bug parade o una sezione di rompicapi informatici, questo entrerebbe di diritto......


High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Insieme a Leica SL3-P presentate le otti...
La Cina svilupperà anche il razzo...
Rocket Lab e la missione Victus Haze per...
Starship: Ship 40 ha eseguito uno static...
I nuovi Samsung Galaxy Watch 9 si mostra...
Einsten aveva ragione, di nuovo: captate...
Top 10 offerte Amazon: 5 sono partite qu...
AI Conf 2026: l'intelligenza artificiale...
Samsung Galaxy S26 scende a 711,49€: un ...
Dopo il maxi blackout, la Spagna cambia ...
Costa meno di un MacBook e fa molto di p...
Ecco tutti i robot aspirapolvere rimasti...
Più partite da seguire in contemporanea?...
389€ sono veramente pochi per questo PC ...
Vesuvius Challenge: srotolato in digital...
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: 03:57.


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