개발자

Address already in use 혹은 Bind failed 에러 해결하기

지구빵집 2019. 9. 30. 16:27
반응형

 

소켓 프로그램이나 TCP 프로그램 실행시 아래와 같은 메시지가 나오면서 실행이 안되는 경우가 있다.

 

Traceback (most recent call last):
  File "server.py", line 5, in <module>
    serverSock.bind(('', 8080))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

 

혹은 Bind Fail 과 같은 메세지도 나온다. 이런 경우는 사용하는 포트 port 를 실행중인 프로그램이 사용 하지 않는데도 사용한다고 나오면서 발생되니 해당 프로그램을 강제로 종료한다.

 

$netstat -lntp 명령어로 해당 포트를 사용하는 프로세스의 PID를 확인한다.

 

pi@raspberrypi:~/bletest $ netstat -lntp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::445                  :::*                    LISTEN      -
tcp6       0      0 :::139                  :::*                    LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
pi@raspberrypi:~/bletest $

 

위에는 PID 아래에 없지만 실제 에러 한경에서는 번호가 나온다. 그 번호에 해당하는 프로세스를 강제로 종료한다. 명령어는 다음과 같다.

 

$sudo kill -9 pid번호 

 

하면 된다. 

 

마음이 우울할 때는 고양이나 강아지 사진을 본다.

 

 

 

반응형