mysql이 실행 중인지 여부를 확인하기 위해 java에서 ServerSocket을 사용했습니다. 실행 중이 아니면 사용자에게 mysql 서버를 실행 시키십시오. 그러나 일부 사용자는 mysql이 실행 중이지만 오류 메시지가 표시되는 것을 불평합니다. 그것은 오직 macos에서 발생합니다. 내가 찾는 것은.macos에서 포트 바인딩
자바 코드 : false를 동일 반환
public static boolean isPortFree(int port)
{
if(port <= 0)
{
return false;
}
ServerSocket sock = null;
try
{
String bindAddress = System.getProperty("bindaddress", "127.0.0.1");
sock = new ServerSocket(port,0,InetAddress.getByName(bindAddress));
}
catch(Exception ex)
{
return false;
}
finally
{
if (sock != null)
{
try
{
sock.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
return true;
}
내가 시스템 프로퍼티 bindaddress
을 설정하면 localhost
에 나는 127.0.0.1
반환 true로 설정합니다. localhost, 127.0.0.1은 다음과 같이 동작합니다. 그것은 오직 macos에서 발생합니다. 나는 my.cnf
bindaddress 문제가 아니라고 생각합니다. 내가 명령 프롬프트에서 체크했기 때문에
mysql -uroot -hlocalhost
mysql -uroot -h127.0.0.1
모두가 작동합니다.
Netstat와
맥 OS
tcp4 0 0 *.3306 *.* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp4와 TCP 사이에 어떤 차이가 있습니까 O를
다른?왜 그런가?
왜 이것을 위해서'ServerSocket'을 사용하는지 이해할 수 없습니다. 'Socket'을 포트 3306에 열려고 시도하십시오. 성공하면 MySQL이 실행 중입니다. 그렇지 않은 경우. – EJP