Error java.net.SocketException: already connected
페이지 정보
본문
C# 소켓 프로그램을 Java로 포팅하던중 "java.net.SocketException: already connected"와 같은 에러가 발생 했습니다. C#은 아래와 같이 소켓을 연결하는데요.
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 소켓을 닫을 때 필요한 정보
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
// 연결
socket.BeginConnect(remoteEndPoint, new AsyncCallback(Connected), socket);
자바에서 C#과 비슷하게 소켓 인스턴스를 만들고, 아래에서 connect 메소드를 호출하면 에러가 발생합니다.
Socket socket = new Socket(ip, port);
SocketAddress address = new InetSocketAddress(ip, port);
socket.connect(address);
자바는 인스턴스를 만들 때 인자로 아이피와 포트를 넘겨받는데요. 이 때 이미 연결된 상태입니다. 그래서, 코드를 아래와 같이 약간 변경해서 처리 했습니다.
Socket socket = new Socket(ip, port);
if (!socket.isConnected()) {
SocketAddress address = new InetSocketAddress(ip, port);
socket.connect(address);
}
Socket 클래스를 보면 기본 생성자도 있습니다. 그래서, 위 코드에서 소켓 인스턴스를 만들 때 아이피와 포트를 넘기지 않고 그냥 만들면 문제가 해결됩니다.
// Method descriptor #34 ()V
// Stack: 3, Locals: 1
public Socket();
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
추천0 비추천0
- 이전글Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Seconds 22.11.01
- 다음글ImportError: cannot import name 'index' from 'operator' (d:\MyWorkspace\operator.py) 22.10.31
댓글목록
등록된 댓글이 없습니다.