나는 모든 것이 잘 작동하는 WCF를 사용하여 통신하는 클라이언트/서버 스타일의 응용 프로그램을 가지고 있습니다. 응용 프로그램의 한 기능은 클라이언트 컴퓨터에서 서버로 파일을 가져 오는 것입니다 (중앙 제어).어떻게 TCPListener를 외부 IP 주소에 바인드 할 수 있습니까?
Central Control은 클라이언트의 지정된 폴더에있는 파일 목록을 요청하고 클라이언트가 각 파일에 연결하고 스트리밍 할 수 있도록 소켓을 사용하여 포트를 엽니 다. 각 파일마다 다른 포트 번호를 사용합니다.
이 방법은 로컬에서 테스트 할 때 잘 작동하지만 고객 환경에 배포 할 때 다음 예외가 발생하기 시작했습니다.
The requested address is not valid in its context
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.TcpListener.Start(Int32 backlog)
at System.Net.Sockets.TcpListener.Start()
at AMIGA.Library.TransferFile.listenerThread()
끝점의 IP 주소는 10. 입니다.. * 주소. 내가 봤어에 대한 답변 및 일반 합의 tcpListener 함께 외부 IP 주소로 바인딩 할 수 없습니다. 나는 생각하지 않았다 10. .. * 주소는 외부입니다. 나는이 작업에 대한 TcpListener를 사용할 수있는 방법은
tcpListener = New TcpListener(IEndPoint)
Dim handlerSocket As Socket
Dim thdHandler As Thread
tcpListener.Start()
RequestFile()
없습니까 다음과 같이 예외를 throw
코드는 무엇입니까? 그렇지 않은 경우 어떤 대안이 있고 대안을 구현하는 것이 얼마나 쉬운가요?
우리는 방화벽 구성에 직접 액세스 할 수 없으므로 변경하는 데 몇 주가 걸릴 수 있음을 명심하십시오.
"외부"의 정의는 상황에 따라 다양하지만 ... 맞습니다. 10.0.0.1/8은 개인 서브넷으로 지정됩니다. –