Hallo,
Ich habe einen Server, welche Nachricht von/an anderen Nutzer empfangen/senden kann, gestartet.
nun möchte ich den Server beenden bzw neu starten, bekomme ich diese Meldung:
bind(): Address already in use
Was ist das zu bedeuten ?
danke im voraus.
bind(): Address already in use ?
Re: bind(): Address already in use ?
Eine Software, die im Netz auf Clientanfragen lauscht, muss sich an einen den Clients bekannten Port binden. Webserver findet man typischerweise an Port 80, MTAs an Port 25, den sshd an Port 22 usw. Ist aber bereits ein anderer Prozess an den gewünschten Port gebunden, schlägt der bind()-Aufruf mit der o.a. Meldung fehl.
Prüfe mal mittels "netstat -lp", an welchen Ports welche Prozesse lauschen. Ich tippe einfach mal,m dass der Serer zum Schliessen ein bisschen Zeit braucht und daher die zweite, neu gestartete Instanz noch die erste am gewünschten Port vorfindet. Vielleicht reicht ein "sleep 5" zwischen den Stop-/Start-Komandos?
Jochen
Prüfe mal mittels "netstat -lp", an welchen Ports welche Prozesse lauschen. Ich tippe einfach mal,m dass der Serer zum Schliessen ein bisschen Zeit braucht und daher die zweite, neu gestartete Instanz noch die erste am gewünschten Port vorfindet. Vielleicht reicht ein "sleep 5" zwischen den Stop-/Start-Komandos?
Jochen
Re: bind(): Address already in use ?
Danke fuer den Tip.
Der Server startet beim ersten mal ohne Fehlermeldung.
beim zweiten mal ja, vieleicht ist der Port schon benutzt ist.
Aber mit ps laesst sich nicht sehen dass er gestartet ist.
Der Server startet beim ersten mal ohne Fehlermeldung.
beim zweiten mal ja, vieleicht ist der Port schon benutzt ist.
Aber mit ps laesst sich nicht sehen dass er gestartet ist.
Re: bind(): Address already in use ?
Hi,
dann gibt es wohl noch eine Verbindung, die nicht vollständig abgebaut wurde. Verwende die Socket-Option SO_REUSEADDR:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">getsockopt(s, SOL_SOCKET, SO_REUSEADDR, &arg, &len);
arg = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &arg, len);
</font><hr></pre></blockquote>
Gruß,
hjb
dann gibt es wohl noch eine Verbindung, die nicht vollständig abgebaut wurde. Verwende die Socket-Option SO_REUSEADDR:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">getsockopt(s, SOL_SOCKET, SO_REUSEADDR, &arg, &len);
arg = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &arg, len);
</font><hr></pre></blockquote>
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?