안녕하세요,.
C#으로 Socket Server와 Client를 구현중입니다.
당연히 Server는 IpAddress와 Port를 IpEndPoint로 구성하여 바인딩해주는데,
클라이언트도 바인딩이 가능한데, 문제는 연결을 끊고 재 접속시, 이미 사용중이라는 오류가 뜨더라고요.
서버쪽
//소켓 생성
Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.1.100"), 5000);
Socket.Bind(ipep);
Socket.Listen(5);
클라이언트 쪽
//소켓 생성
Socket createdSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
createdSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
var endPoint = new IPEndPoint(IPAddress.Parse("192.168.1.100"), 6000);
createdSocket.Bind(endPoint);
SocketAsyncEventArgs lookingEvent = new SocketAsyncEventArgs();
lookingEvent.RemoteEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.100"), 5000);
createdSocket.Bind(endPoint);
lookingEvent.Completed += new EventHandler<SocketAsyncEventArgs>(Connect_Completed);
createdSocket.ConnectAsync(lookingEvent);
이렇게 서버 클라이언트 생성해서 접속 후, 해제 한 다음 재 접속 1회 또는 2회를 반복하니까 이미 사용중인 아이피라고 에러가 뜨네요(System.Net.Sockets.SocketError.AddressAlreadyInUse)
현재 PC에 IP설정이 여러개 되어있어서 클라이언트도 아이피와 포트를 바인딩해주고 싶은데 , 재접속 시 "System.Net.Sockets.SocketError.AddressAlreadyInUse"이 에러 없이 정상적으로 재사용 가능하게 하는 방법이 있을까요?
선배님들의 도움 부탁드립니다.