Thread View: pl.comp.programming
6 messages
6 total messages
Started by kom... Piotr Piatkowski
Sun, 21 Apr 1996 00:00
Address already in use
Author: kom... Piotr Piatkowski
Date: Sun, 21 Apr 1996 00:00
Date: Sun, 21 Apr 1996 00:00
18 lines
1251 bytes
1251 bytes
Ostatnio dosc czesto pisze proste serwery TCP, ktore sluchaja na okreslonym porcie na polaczenia. Jak to przy pisaniu programow - czesto wprowadza sie poprawki, rekompiluje (albo i nie, bo to czesto jest perl), niestety - zawsze po przerwaniu sluchajacego na danym porcie programu, przez kilka minut nie mozna go uruchomic ponownie bo proba wykonania `bind' zglasza blad `address already in use'. Nie pomaga wczesniejsze zamykanie aktywnych polaczen, jedynym rozwiazaniem jest zmiana portu na inny, co jednak z kolei wymaga modyfikacji programu klienta i nie zawsze jest proste. Czy ktos zna sposob jak sobie z tym poradzic? Moze jest jakas komenda ktora `czysci' dany port (moze byc root'owa), albo jeszcze lepiej - sprawdza czy faktycznie ktos na tym porcie slucha i jezeli nie to zwalania dany adres? -- Piotr Piatkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: Address already in use
Author: and... Andy
Date: Mon, 22 Apr 1996 00:00
Date: Mon, 22 Apr 1996 00:00
27 lines
1624 bytes
1624 bytes
kom...@uci.agh.edu.pl (Piotr Piatkowski) wrote: noge tylko dodac ze jest to powodowane przez TCP/IP timeout, ktore czeka aby miec pewnoc ze nie zostane pomieszna kolejnosc pakietow. Wiec po odlaczeniu sie od port nie mozna go uzywac przez pewien czas. pozdrowienia Andrzej Trzeciak >Ostatnio dosc czesto pisze proste serwery TCP, ktore sluchaja na >okreslonym porcie na polaczenia. Jak to przy pisaniu programow - >czesto wprowadza sie poprawki, rekompiluje (albo i nie, bo to czesto >jest perl), niestety - zawsze po przerwaniu sluchajacego na danym >porcie programu, przez kilka minut nie mozna go uruchomic ponownie bo >proba wykonania `bind' zglasza blad `address already in use'. >Nie pomaga wczesniejsze zamykanie aktywnych polaczen, jedynym >rozwiazaniem jest zmiana portu na inny, co jednak z kolei wymaga >modyfikacji programu klienta i nie zawsze jest proste. >Czy ktos zna sposob jak sobie z tym poradzic? Moze jest jakas komenda >ktora `czysci' dany port (moze byc root'owa), albo jeszcze lepiej - >sprawdza czy faktycznie ktos na tym porcie slucha i jezeli nie to >zwalania dany adres? >-- >Piotr Piatkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: Address already in use
Author: Jaroslaw Kowalski
Date: Mon, 22 Apr 1996 00:00
Date: Mon, 22 Apr 1996 00:00
9 lines
800 bytes
800 bytes
Mialem identyczny problem, tez chodzilo o serwery TCP pisane w C++. Ale zeby bylo smieszniej po uruchomieniu programu serwera na jednym komputerze czasami problem wystepowal a czasami nie, na innym znowu 'address in use' wystepowal zawsze a na jeszcze innych nie bylo problemow. Podejrzewam ze chodzi tutaj o Linuxa (MIMUW). Chyba FreeBSD nie ma takich problemow. Jaroslaw Kowalski
Re: Address already in use
Author: kom... Piotr Piatkowski
Date: Mon, 22 Apr 1996 00:00
Date: Mon, 22 Apr 1996 00:00
23 lines
1473 bytes
1473 bytes
Jaroslaw Kowalski (jkowalsk@PROBLEM_WITH_INEWS_DOMAIN_FILE) wrote:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: Mialem identyczny problem, tez chodzilo o serwery TCP pisane w C++.
: Ale zeby bylo smieszniej po uruchomieniu programu serwera na jednym komputerze
: czasami problem wystepowal a czasami nie, na innym znowu 'address in use'
: wystepowal zawsze a na jeszcze innych nie bylo problemow.
: Podejrzewam ze chodzi tutaj o Linuxa (MIMUW). Chyba FreeBSD nie ma takich
: problemow.
Nie tylko... Na linuxie moj kolega zauwazyl, ze kilkakrotne
puszczenie netstata usuwa problem. Ale nie jestem pewien czy to nie
bylo zludzenie. Natomiast identyczny problem wystepuje na Solarisie,
a puszczanie netstata na maszynie bedacej serwerem WWW, FTP i IRC nie
jest zbyt pasjonujacym zajeciem :-) Co do FreeBSD - nie sprawdzalem,
nie wiem. Ale wydaje mi sie ze problem jest typowy dla wszystkich
Unixow.
: Jaroslaw Kowalski
--
Piotr Piatkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: Address already in use
Author: ar... Artur Urbanowicz
Date: Tue, 23 Apr 1996 00:00
Date: Tue, 23 Apr 1996 00:00
23 lines
878 bytes
878 bytes
/*
Piotrze - uzyj funkcji setsockopt() w podany nizej sposob.
Pozdrawiam: Artur Urbanowicz
*/
int one = 1;
if( (tep = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)) == -1 )
{
printf( "Could not get a free socket: %s", strerror(errno) );
return -1;
}
if( setsockopt( tep,SOL_SOCKET,SO_REUSEADDR,(char *)&one,sizeof(one) ) )
{
printf( "Could not set socket option SO_REUSEADDR: %s", strerror(errno) );
return -1;
}
.
.
.
Address already in use - ROZWIAZANIE
Author: kom... Piotr Piatkowski
Date: Tue, 23 Apr 1996 00:00
Date: Tue, 23 Apr 1996 00:00
36 lines
1536 bytes
1536 bytes
Artur Urbanowicz (ar...@apollo.umcs.lublin.pl) wrote:
: /*
: Piotrze - uzyj funkcji setsockopt() w podany nizej sposob.
: Pozdrawiam: Artur Urbanowicz
: */
: int one = 1;
: if( (tep = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)) == -1 )
: {
: printf( "Could not get a free socket: %s", strerror(errno) );
: return -1;
: }
: if( setsockopt( tep,SOL_SOCKET,SO_REUSEADDR,(char *)&one,sizeof(one) ) )
: {
: printf( "Could not set socket option SO_REUSEADDR: %s", strerror(errno) );
: return -1;
: }
Dziala doskonale - wielkie dzieki! :-)
Przy okazji - to co teraz pisalem jest akurat w perlu, wiec gdyby
ktos chcial zobaczyc jak to wyglada w tym jezyku, sluze uprzejmie:
socket(S, &PF_INET, &SOCK_STREAM, $proto)
|| die "Can't create the socket: $!\n";
setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, 1)
|| die "Can't set socket to reuse address: $!\n";
(a potem standardowo - bind, listen, accept).
--
Piotr Piatkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads