2013-07-14 4 views
0

vb.net에서 간단한 tcp 클라이언트 - 서버 응용 프로그램을 만들었습니다. 모든게 잘 때 로컬 호스트 (127.0.0.1) IP 주소로 설정 작동합니다. 원격 컴퓨터에 연결하고 싶습니다. (클라이언트를 내 컴퓨터와 서버에 연결하거나 그 반대의 경우도 마찬가지입니다.)클라이언트 - 서버를 통해 원격 컴퓨터에 연결

편집 :

다음과

확인, 관심의 코드가 될 때 :

서버 :

TcpListener = 새 TcpListener (IPAddress.Any, 포트)로

희미한 서버

을 클라이언트 :

IPAddress = IPAddress.Parse (TextBox1.Text)로 변경하십시오. 클라이언트 = 새 TcpClient (theip.ToString, port)

이제 원격 컴퓨터 (인터넷을 통해 연결)와 서버 (외부 IP 주소를 알고있는 서버)에 클라이언트가있는 경우 "TextBox1.Text"에 무엇을 입력해야합니까? 서버를 실행하는 컴퓨터의 외부 IP 주소를 텍스트 상자에 직접 입력 할 수 있습니까? 또한, "포트 포워딩"/ "방화벽이 연결을 허용 할 것"과 같은 것들을 처리해야합니까? 그렇다면 제 가이드를 안내해 주시거나 튜토리얼을 연결하여 내 애플리케이션에서 자동으로 수행하거나 포트 포워드가 필요하지 않도록이 작업을 수행 할 대체 방법이 있습니까? 고마워요!

+0

인터넷을 통해 연결하는 경우 모든 네트워크 연결과 마찬가지로 포트 전달이 필수이므로 해당 컴퓨터가 해당 포트에 응답합니다. LAN에 연결하는 경우 방화벽에서 서버의 클라이언트 및 수신 연결을 허용하면됩니다. 귀하의 프로그램이 그것들을 설정할 수있는 방법은 없으며, 그렇게하는 것은 귀하의 앱 책임 밖입니다. 사용자가 두 PC 모두에서 이러한 단계를 수행 할 수 있도록 명확한 문서 또는 지침을 제공해야합니다. "테스트 연결"버튼은 문제 해결에 도움이 될 수 있습니다. – Alejandro

+0

도움 Alejandro에 감사드립니다!, 나는 질문이 있습니다 - 어떻게 utorrent 및 팀원 같은 응용 프로그램을 작동합니까? 그들은 사용자에게 포트 포워딩을 요청하지 않습니다 ... – Mohit

+0

Teamviewer는 양방향으로 나가는 연결 만하고 서버는 연결을 관리하므로 포트 포워딩을 필요로하지 않습니다 (그러나 사용하는 포트에는 나가는 방화벽 권한이 필요합니다). UTorrent **는 실제로 여러분의 측면에서 포트 포워딩을 필요로하며 피어 투 피어 프로토콜이기 때문에 시딩을위한 연결을 수신하기 때문에 테스트가 제공됩니다. Bittorrent를 쉽게 다운로드 할 수 있습니다. 사용자가 포트 포워딩을하지 않도록 할 수있는 유일한 방법은 직접 서버 부분을 호스팅하는 것입니다. – Alejandro

답변

0

다른 컴퓨터에는 외부 IP 주소가 있다고 가정합니다. 이는 또한 로컬 IP 주소를 가짐을 의미합니다. 즉 NAT 방화벽이나 그와 유사한 것의 뒤에 있습니다. 이 경우, 예를 들어 포트 포워딩을 설정하여 통신이 가능하도록 방화벽을 구성해야합니다. MSN Messenger, VOIP 클라이언트 등과 같은 응용 프로그램은이 기능을 자동으로 협상하는 메커니즘이 있지만 정교하지는 않습니다.

+0

질문 버디를 편집했습니다. 포트 포워딩을 필요로하지 않는 대체 방법이 있습니까? 어떻게해야합니까? 감사! – Mohit

+0

당신이하려고하는 것은 외부에서 내부로 방화벽을 통해 연결하는 것입니다. 방화벽이 방지하도록 설계된 것입니다. 그래서 쉽지 않습니다. AFAIK MSN 등은 어느 정도까지 양쪽 클라이언트가 적어도 처음에 * 나가는 * 연결을 할 수있는 서버를 갖게함으로써 이것을 얻을 수 있습니다. 정확히 무엇이 필요한지는 사용중인 방화벽의 종류에 따라 다르며, 방화벽 유형을 식별 할 수있는 몇 가지 기능과 여러 가지 전략이 있습니다. 그러나 VOIP 클라이언트 등을 설정하는 데 어려움을 겪어 본 사람이라면 여전히 인기가 있습니다. – peterG

+0

내가 알 필요가있는 것은 일반 사용자가 두 개의 다른 원격 시스템에서 실행될 때 두 개의 인스턴스가 합법적 인 VB에서 응용 프로그램을 작성하지 않고 서로 자유롭게 통신 할 수 있는지 여부입니다. 이를 달성하고자한다면, 어떻게해야합니까? – Mohit

관련 문제