• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af marlar | 02.01.2012 19:27

Hvordan frigiver jeg en port

Software
Jeg sidder og eksperimenterer med en proxy skrevet i Python. Når jeg afbryder scriptet og starter det igen, får jeg fejlen:

Address already in use

Efter et minuts tid er porten (8000) så frigivet og jeg kan starte scriptet, men er det ikke muligt at frigive porten manuelt eller nedsætte frigivelsestiden så jeg ikke skal vente for hver lille ændring jeg foretager?
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer11

# 1

13 år 5 måneder siden

Permalink

Indsendt af frogmaster den 2. januar 2012 kl. 21:29

Permalink

Aner det ikke, men har du

Aner det ikke, men har du prøvet at genstarte netværket?

sudo invoke-rc.d networking restart

Den bryder sig sikkert ikke om det ;-)

bruger@mint-11 ~ $ sudo invoke-rc.d networking restart
* Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces
* Reconfiguring network interfaces... [ OK ]
bruger@mint-11 ~ $

  • Log ind eller opret dig for at tilføje kommentarer

# 2

13 år 5 måneder siden

Permalink

Indsendt af osjensen den 2. januar 2012 kl. 21:42

Permalink

Ved ikke om det kan

Ved ikke om det kan bruges.

To close a port, you can use the following command as root:

fuser -k 80/tcp

Which will close port 80 (used by the web server).

http://tuxarena.blogspot.com/2009/01/tip-of-day-close-port-in-linux.html

You could alternatively use iptables:

iptables -I INPUT -p tcp -dport 80 -j DROP
It basically accomplishes what you want.

http://superuser.com/questions/127863/manually-closing-a-port-from-comm…

os.
  • Log ind eller opret dig for at tilføje kommentarer

# 3

13 år 5 måneder siden

Permalink

Indsendt af marlar den 2. januar 2012 kl. 22:20

Permalink

Ingen af forslagene virker,

Ingen af forslagene virker, desværre....
  • Log ind eller opret dig for at tilføje kommentarer

# 4

13 år 5 måneder siden

Permalink

Indsendt af The_stig den 3. januar 2012 kl. 01:35

Permalink

ligende problem

@0

Dette link beskriver et ligende problem.

http://www.linuxquestions.org/questions/programming-9/python-programs-d…

Er det en proxy du selv har skrevet og må man se koden ?

/The Stig
  • Log ind eller opret dig for at tilføje kommentarer

# 5

13 år 5 måneder siden

Permalink

Indsendt af redeeman den 3. januar 2012 kl. 13:34

Permalink

release en port? lige så

release en port? lige så snart dit program stopper med at lytte på det skal porten da være fri igen?
  • Log ind eller opret dig for at tilføje kommentarer

# 6

13 år 5 måneder siden

Permalink

Indsendt af m_abs den 3. januar 2012 kl. 19:32

Permalink

#0
Hvilket system sidder du

#0
Hvilket system sidder du med?

Såvidt jeg husker var der et problem med tidligere kernels, at de var længe om at frigive porte, jeg er rimelig sikker på at jeg kæmpede med det dengang jeg stadig brugte aMule.
  • Log ind eller opret dig for at tilføje kommentarer

# 7

13 år 5 måneder siden

Permalink

Indsendt af marlar den 3. januar 2012 kl. 20:10

Permalink

Er det en proxy du selv

#4: Er det en proxy du selv har skrevet og må man se koden ?

Det er munchy: http://proxies.xhaus.com/python/munchy.html

Det problem du henviser til er noget anderledes da det mere handler om at proxien ikke genbruger porten.

#5: release en port? lige så snart dit program stopper med at lytte på det skal porten da være fri igen?

Nu er det sådan at proxien kører indtil man afbryder den med Ctrl-C. Jeg har også prøvet en kill -9 for at se om det skulle gøre nogen forskel. Det gør det ikke, i alle tilfælde er outputtet:

Traceback (most recent call last):
File "./munchy.py", line 445, in
ProxyServer(PORT).serve_forever()
File "./munchy.py", line 436, in __init__
ServerBase.__init__(self, ('', port), ProxyHandler)
File "/usr/lib/python2.6/SocketServer.py", line 402, in __init__
self.server_bind()
File "/usr/lib/python2.6/SocketServer.py", line 413, in server_bind
self.socket.bind(self.server_address)
File "", line 1, in bind
socket.error: [Errno 98] Address already in use


Efter et stykke tid fungerer det igen.

#6: Hvilket system sidder du med?

LMDE, så det skulle være rimeligt uptodate.
  • Log ind eller opret dig for at tilføje kommentarer

# 8

13 år 5 måneder siden

Permalink

Indsendt af The_stig den 3. januar 2012 kl. 22:10

Permalink

har afprøvet koden

@marlar
Jeg har prøvet koden du linker til og den frigiver fint porten på en fedora 16, med denne python version:

python.x86_64 2.7.2-5.2.fc16

når jeg bruger ctrl-c, jeg kan starte den igen lige efter den giver promten tilbage. Det kunne godt tyde på noget 2.6 specifikt problem du har.

http://stackoverflow.com/questions/2765152/what-is-the-correct-way-to-c… (jeg ved så ikke om dette link kan være til hjælp).

/The Stig

  • Log ind eller opret dig for at tilføje kommentarer

# 9

13 år 5 måneder siden

Permalink

Indsendt af marlar den 4. januar 2012 kl. 14:10

Permalink

Jeg prøvede at

#8:

Jeg prøvede at indsætte linjen fra linket uden at det dog hjalp. Men måske er det noget 2.6 halløj, vil prøve med 2.7 senere.
  • Log ind eller opret dig for at tilføje kommentarer

# 10

13 år 5 måneder siden

Permalink

Indsendt af The_stig den 4. januar 2012 kl. 22:41

Permalink

stop engang

@marlar

Min test var ikke helt gennemført, da jeg bare startede programmet og killede programmet igen uden, at havde være forbundet til det, for så at starte det igen, hvilket ikke gav nogen fejl.

Hvis jeg derimod starter programmet og telnet'er til det på port 8000 og prøver at afbryde programmet, siger den
"KeyboardInterrupt", når jeg I min telnet session, skriver get , hvilket så selvfølgeligt giver mig en bad request 400 i min telnet session, hvilket også var forventligt.

Breaker jeg så programmet - med ctrl-c og starter det igen, så kommer denne fejl, som du jo kender så godt :D socket.error: [Errno 98] Address already in use

Så er det jo lige man tænker, hvorfor skal man så lige vente 60 sec, for at den lukker porten?

hvis du i en anden terminal kører en "netstat -a -n | grep 8000" lige efter du break'er ud med ctrl-c, så skulle du gerne se en linie ligende dette:

tcp 0 0 127.0.0.1:8000 127.0.0.1:49202 TIME_WAIT

TIME_WAIT tænker man så - and why 60 sec ?

Men det er der også en forklaring på, den lange forklaring ligger i denne rfc

http://www.elook.org/computing/rfc/rfc1337.txt

og den korte er, at hvis man lukker og starter en port, så kan der faktisk være nogle pakker, som ikke er nået frem i den gammle session og hermed rammer den nye session og lukker den nye forbindelse igen. Det det handler om, er at server og klient skal have tid til at lukke forbindelsen pænt.

Man kan selvfølgeligt godt tweake på dette, men det er default linux OS network operation, at man skal vente 60 sec.

Håber det er forklaring nok og jeg ikke har fået dig til at jagte skygger med 2.6 vs 2.7 python.

/The Stig


  • Log ind eller opret dig for at tilføje kommentarer

# 11

13 år 5 måneder siden

Permalink

Indsendt af marlar den 5. januar 2012 kl. 11:45

Permalink

#10
Tak for den meget

#10

Tak for den meget grundige forklaring. Det sætter jeg stor pris på. Det er sådanne indlæg der gør det værd at kommer her på forummet :)

Håber det er forklaring nok og jeg ikke har fået dig til at jagte skygger med 2.6 vs 2.7 python.

Jeg har ikke nået at kigge nærmere på 2.7 så det er helt ok.
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

Gode anmeldelser Zorin OS 17.3 0
Linux App Store Flathub når 3 milliarder downloads 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0

Seneste aktivitet

Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 2
Mest sikker webbrowser 5
Firefox 2
Ingen Mint 4
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15
Pepsi Challenge 4
"Intet realistisk alternativ" - mig i r*ven 10
Linuxin er nu migreret til Drupal 11 13
Et Dansk alternativ til Facebook 18
Ekstern Blu-ray-brænder, der fungerer med PCLinuxOS 3
Københavns og Aarhus Kommune dropper MS 9
Open Source-eksperimentet 1
Microsoft og Google ud af de danske skoler 2
Udfordringer med lydin på Debian 12 1
ExplainingComputers? 2

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !