Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-06-2006, 16: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, 12: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, 13: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, 19: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 12:16.
osa è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2006, 16: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, 23: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, 20: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, 11: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


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
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: 07:33.


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