|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
[C] errore su setsockopt()
Ciao,
ho un problemino con la chiamata setsockopt() per impostare l'opzione SO_REUSEADDR, scopo di questa è evitare che il mio server non possa effettuare la bind() successiva nel caso un altro processo stia usando lo stesso indirizzo locale... innanzi tutto il codice: Codice:
struct sockaddr_in Addr; int Mysocket, flag_ok = 1; if(Mysocket = socket(AF_INET,SOCK_STREAM,0) == -1) { fprintf(stderr, "Listen_toLocalPort: socket() failed.\n"); exit(1); } if(setsockopt(Mysocket,SOL_SOCKET,SO_REUSEADDR,(char *)&flag_ok,sizeof(flag_ok)) < 0) { fprintf(stderr, "Listen_toLocalPort: setsockopt() failed.\n"); GoToSetsockoptError(); close(Mysocket); exit(1); } putroppo impostare quella opzione è piuttosto importante. Sapete darmi un consiglio? Grazie. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Un uso tipico è un demone che monitora un processo che fa da server, se questo si pianta il demone ha il compito di far ripartire il programma. Se non settassi quell'opzione il programma non sarebbe in grado di rimettersi in listen sulla porte per un certo tempo definito dal sistema. Comunque mi sembra corretto. Togli il casta a char *, non serve. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Attenzione !!!
if(Mysocket = socket(AF_INET,SOCK_STREAM,0) == -1) |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Thank you, stupido errore di parentesi.... mo funziona infatti
![]() in quanto all'uso: ho notato che se ho un'altro processo che stà utilizzando un indirizzo locale la bind() che faccio torna errore, precisamente EADDRINUSE.... sapevo che se l'opzione SO_REUSEADDR è settata ad 1 io posso rieffettuare bind() ... o mi stà sfuggendo qualcosa? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se tenti di andare in listen sullo stessa coppia indirizzo:porta è normale e continuerà a farlo sempre fin quando la coppia è utilizza in listen da una applicazione.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:10.