2011-12-12 2 views
2

저는 소켓 프로그래밍 방법을 배우고 있지만 코드 작성 연습을 시도 할 때 몇 가지 문제가 있습니다. 이 코드는 동일한 LAN에있는 컴퓨터에 연결하는 데 사용되지만 인터넷을 통해 다른 네트워크에있는 두 대의 컴퓨터에 연결하려고하면 연결할 수 없습니다.소켓 프로그래밍 학습

프로그램 때문에 또는 네트워크 보안으로 인한 것입니까?

응용 프로그램이 인터넷을 통해 통신하도록하려면 여기에서 자세한 정보를 찾을 수 있습니다. 나는 그것을 더 잘 이해할 수 있도록 채팅 프로그램을 만들 것을 생각하고 있었지만 인터넷을 통해 프로그램을 의사 소통 할 수는 없다.

편집 : 잘 사용하는 포트는 6892입니다. 그냥 임의의 포트입니다. 나는 이런 것들을 배우는 일종의 stil입니다.

+4

오늘 수정 구슬이 흐릿합니다. 사용중인 포트, 네트워크 설정 등에 대한 코드 또는 일부 세부 정보를 표시하십시오. –

+0

인터넷의 대부분의 포트는 방화벽으로 인해 차단되므로 가능한 한 두 개의 호스트를 연결해보십시오 이것들을 제어한다. –

+0

하지만 방화벽을 어떻게 통과합니까? 오늘날 일반적인 채팅 응용 프로그램이 방화벽을 통과해야하는 것처럼 말입니다. – mma1480

답변

3

네이티브 소켓을 사용하고 있고 방화벽을 사용하고 있다면 분명히 실패합니다. 방화벽은 포트 80, HTTP, 포트 443 (?)을 https에만 허용하도록 설정됩니다.

+0

이렇게하면 방화벽에서 포트를 열거 나 포트 포워딩을해야한다는 뜻입니까? – mma1480

+0

나는 불필요한 포트를 열지 않을 것입니다. 특히 무엇을하고 있는지 확실하지 않은 경우에는 특히 그러합니다. 그것은 해킹당하는 확실한 방법입니다. 하지만 네, 그렇게 할 수 있습니다. 표준 포트 목록은 http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 아래의 Clyfe 주석에 언급 된 것처럼 올바른 포트를 열었더라도 연결하지 못할 수도 있습니다. 예를 들어 http 터널링을 고려할 수 있습니다. – Barry

+0

소켓 링크의 두 끝 사이에있는 방화벽에서 사용중인 포트를 열어야합니다. – ChrisBD

2

일부 계층 3 네트워크 토폴로지에서는 컴퓨터 간의 연결이 양방향이 아니므로 페더레이션 브로커와 같은 기술을 통해 통신을 조정해야합니다.

원격 스테이션에서 컴퓨터를 직접 처리하지 못할 수도 있습니다. 설정에 따라 원격 스테이션에서 게이트웨이까지만 연결할 수 있습니다.

0

하나 또는 모두 또는 로컬 네트워크에있는 컴퓨터입니까? 192.168으로 시작하는 IP는 로컬 네트워크에 있습니다.

http://whatismyipaddress.com/을 사용하여 표시된 IP가 컴퓨터에 표시되는 IP와 동일한 지 확인하지만 프록시는 제거해야합니다.

대상 컴퓨터가 로컬 네트워크에 있거나 해당 웹 사이트에 표시된 IP가 컴퓨터에 표시된 것과 다른 경우 문제가 발생합니다. 이 상황은 프로그램과 아무 관련이 없지만 네트워크를 구성해야합니다. 이 문제를 해결하려면 네트워크 관리자에게 문의해야합니다.

+0

예 두 컴퓨터가 모두 통신 할 수있는 로컬 네트워크에있는 경우 그러나 그들이 동일하지 않을 때 프로그램은 의사 소통을 할 수 없습니다.그것이 내가 이해하려고하는 것입니다 : 같은 네트워크에 있지 않을 때 어떻게 의사 소통을하도록 만드는지. – mma1480

+0

@ mma1480 로컬 네트워크 주소를 네트워크 외부에서 볼 수 없기 때문입니다. 로컬 네트워크에 액세스하는 데 사용되는 주소 (일반적으로 해당 웹 사이트에 표시된 주소)를 알아야하며 포트 포워딩이 필요합니다. http://en.wikipedia.org/wiki/Port_forwarding 도움이 될 수 있습니다. 그러나 넷 포워딩을 구성하려면 로컬 네트워크 구성을 관리 할 수있는 관리 권한이 필요합니다. 네트워크 관리자에게 문의해야 할 수도 있습니다. – fefe