2013-07-09 5 views
0

http://www.codeproject.com/Articles/8771/Simple-but-potentially-useful-example-of-NET-Remot에서 간단한 .Net 원격 예제를 다운로드했습니다. 예제가 작동합니다. 서버 사이드 코드는 클라이언트에 의해 호출됩니다. 이제 아래 코드와 같은 클라이언트 코드를 내 C# 프로젝트에 복사하면 SocketException이 발생합니다. 대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다..Net Remoting은 예제에서 작동하지만 내 어셈블리에서는 작동하지 않습니다.

EDIT 1 START

그것도 점점 낯선 사람. 내가 작동하는 클라이언트로 테스트 프로젝트를 가지고 작업중인 프로젝트를 내가 작업하고있는 솔루션에 추가하고 프로젝트의 새로운 디버그 인스턴스를 실행합니다. (유일한 프로젝트는 그 순간에 솔루션에서 실행되었습니다) 그것은 나에게 SocketException을 준다 : 대상 기계가 그것을 적극적으로 거부했기 때문에 어떤 연결도 만들 수 없다. 솔루션 기반의 구성과 관련이있는 것처럼 보입니다.

END 1 END 때문에 내가 뭔가를 놓친 경우보고 싶었다이 이상한 행동의

. 그래서 새로운 솔루션으로 새로운 (winforms) 프로젝트를 만들었고 똑같은 코드를 새로운 form1_load 이벤트에 넣었습니다. 그리고 서버 측 코드는이 새로 생성 된 winforms 애플리케이션에 의해 호출됩니다. 한 응용 프로그램이 서버 측 코드를 실행하기 위해 원격으로 연결하고 다른 응용 프로그램이 동일한 코드를 사용하여 수행 할 수없는 방법은 무엇입니까? 그리고 예, Windows 방화벽이 꺼져 있고 다른 방화벽이 없습니다.

위의 내용은 모두 한 대의 컴퓨터에서 테스트됩니다. 따라서 물리적 네트워크가 필요 없습니다.

제안 사항?

[STAThread] 
    static void Main() 
    { 
     TcpClientChannel channel = new TcpClientChannel(); 
     ChannelServices.RegisterChannel(channel); 
     IProcessActivator.IProcessActivator process_activator = (IProcessActivator.IProcessActivator)Activator.GetObject 
     (
      typeof(IProcessActivator.IProcessActivator), 
      "tcp://localhost:9000/ProcessActivator" 
     ); 
     process_activator.Run("IExplore.exe", @"http://www.codeproject.com"); 
    } 

답변

0

이동 서비스가 포트 9000에서 실행 중인지 확인하고 이동하십시오. 이것은 대개 서버가 수신하는 포트가 클라이언트에서 연결하려는 포트가 아니기 때문에 우리 측에서 발생합니다. 또한 방화벽 문제가있을 수 있으므로 9000 포트가 방화벽에서 예외로 추가되었는지 확인하십시오.

+0

해결 서비스는 Solutation A의 클라이언트가 연결할 수 있지만 솔루션 B의 코드가 정확히 동일한 클라이언트는 올바른 포트에서 실행되지 않습니다. 방화벽이 꺼져있어 문제가되지 않아야합니다. –

0

서버 측에서 다운로드 한 코드는 TCP 채널의 경우 포트 9000에서, HttpChannel의 경우 포트 8000에서 실행됩니다. 코드에서 포트를 모두 9000으로 설정했는지 확인하십시오. 하나의 통신 채널에는 하나의 포트만 사용하십시오. 응용 프로그램이 몇 번 충돌 한 경우 서버 측 코드가 백그라운드에서 실행 중입니다. 처리를 종료하십시오.

두 번째 이유는 프로젝트에 통신용으로 동일한 포트를 사용하는 다른 프로젝트가있을 수 있기 때문입니다. 서버가 실행될 때 Socket을 사용하여 대상 포트 예외 및 수신 대기를 중지합니다.

+0

HttpChannel을 사용하고 있지 않습니다. 그리고 솔루션 A와 B의 코드는 완전히 동일합니다. 그러나 솔루션 A는 연결할 수 있지만 솔루션 B는 연결할 수 없습니다. –