Visualizzazione dei risultati da 1 a 8 su 8

Discussione: liberare una porta

  1. #1

    liberare una porta

    Salve a tutti, sto provando a fare una chat in c utilizzando le socket, solo che ho il problema che quando lancio il server, e mi metto in ascolto su una porta, se devo modificare il codice e provo a rifarlo partire ottengo l'errore che la porta è già occupata.
    Ho provato un comando del genere: killall server ("server" è il nome dell'eseguibile del programma) ma senza risultato.
    Qualche aiuto?

  2. #2
    killalo con -9

    kill [pid] -9 così muore di sicuro.. al massimo ti resta zombie ma le risorse dovrebbe liberarle
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

  3. #3
    Al posto che killarlo brutalmente usa una socket close(), così non hai problemi.

  4. #4
    Originariamente inviato da stai_tranquillo
    killalo con -9

    kill [pid] -9 così muore di sicuro.. al massimo ti resta zombie ma le risorse dovrebbe liberarle
    Il problema è che non so che pid ha. Se uso il comando "top" riesco a vedere solo alcuni processi, poi la finestra della shell termina e non riesco a scorrere la lista dei processi. Qualche altro comando?

  5. #5
    Originariamente inviato da maiosyet_2
    Al posto che killarlo brutalmente usa una socket close(), così non hai problemi.
    Non so come fare, visto che il programma rimane in ascolto...dovrei trappare un "segnale"?

  6. #6
    Originariamente inviato da kylnas1
    Il problema è che non so che pid ha. Se uso il comando "top" riesco a vedere solo alcuni processi, poi la finestra della shell termina e non riesco a scorrere la lista dei processi. Qualche altro comando?

    pidof?
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

  7. #7

    Re: liberare una porta

    Originariamente inviato da kylnas1
    Salve a tutti, sto provando a fare una chat in c utilizzando le socket, solo che ho il problema che quando lancio il server, e mi metto in ascolto su una porta, se devo modificare il codice e provo a rifarlo partire ottengo l'errore che la porta è già occupata.
    Ho provato un comando del genere: killall server ("server" è il nome dell'eseguibile del programma) ma senza risultato.
    Qualche aiuto?
    Aggiungi questo subito dopo la socket():
    codice:
    /*reuse a TIME_WAIT socket*/
    optval=1;
    ret = setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
    Vadi il manuale o, meglio, testi tipo GAPiL per dettagli
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  8. #8

    Re: Re: liberare una porta

    Originariamente inviato da Ikitt
    Aggiungi questo subito dopo la socket():
    codice:
    /*reuse a TIME_WAIT socket*/
    optval=1;
    ret = setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
    Vadi il manuale o, meglio, testi tipo GAPiL per dettagli
    Questo il codice, ma sembra non funzionare:
    codice:
    if ((listener = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    	perror("socket");
    	exit(1);
    }
    if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) {
    	perror("setsockopt");
    	exit(1);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.