2009-11-26 6 views
12

두 개의 C# 응용 프로그램이 있고 그 중 하나가 두 개의 정수를 다른 정수로 보내길 원합니다 (몇 초에 한 번만 호출되기 때문에 빠를 필요는 없습니다).C#에서 프로세스 간 통신을 수행하는 가장 쉬운 방법은 무엇입니까?

가장 쉬운 방법은 무엇입니까? (가장 우아한 것일 필요는 없습니다.)

+0

거의 중복됨 : http://stackoverflow.com/questions/232332 및 http://stackoverflow.com/questions/833376 –

답변

0

나는 그들이 소켓을 통해 대화한다고 말하고 싶습니다.

소켓에 하나의 프로그램 listen이 있고 다른 하나는 첫 번째로 connect입니다. 두 개의 정수를 한 줄에 숫자의 문자열로 보냅니다.

유일한 질문은 포트 번호에 대해 어떻게 동의해야하는지, 그리고 어떻게 그들이 서로 이야기하고 있는지 알 수있는 것입니다. 그들은 항상 포트 12345 (말)를 사용해야한다고 결정한 포트 번호에 동의 할 수 있으며, 두 번째 부분에 대한 더티 해커 솔루션은 대화하는 사람이 누구인지를 신뢰하는 것입니다.

+0

실제로 기억하는 한, 연결을 허용 할 주소를 지정할 수 있습니다 (또는 그것이 어떤 주소에서 왔는지를 최소한 확인하고, localhost가 아닌 경우 ... 잘, 낯선 사람들과 결코 이야기하지 마십시오. – Bobby

0

또 다른 방법은 명명 된 파이프를 모방하는 것입니다. 파일을 어딘가에 선언하고 읽거나 쓰십시오.

또는 프로그램이 순차적으로 실행되면 클립 보드를 사용해 볼 수도 있지만 그 해결책은 추악하고 버그가 있습니다 (때때로 .NET은 아무 이유없이 .NET에 클립 보드에 액세스 할 수 없습니다).

+1

클립 보드 부분에 강하게 동의하지 않습니다. 그리고 실제로 명명 된 파이프를 사용할 수있을 때 명명 된 파이프를 모방하는 데 아무런 의미가 없습니다. – Groo

0

Mutex은 옵션이 될 수 있습니다. 읽어 보시기 바랍니다 : Inter-Process Data Exchange using .NET 2.0

net.pipeWCF을 사용할 수도 있습니다.

+0

뮤텍스는 데이터 전송이 아닌 동기화에 사용됩니다. – Groo

+0

그 Groo를 삭제했습니다. –

15

가장 쉽고 신뢰할 수있는 방법은 거의 확실합니다 IpcChannel (a.k.a.Inter Process Communication Channel); 그게 거기있는거야. 몇 줄의 코드와 구성을 사용하여 실행하고 실행할 수 있습니다.

+1

매우 간단합니다. 쉬운, 등등 ... 지금까지 내가 본 것 중에서 가장 쉬운 방법. – DaBlue

5

.NET Remoting을 사용해 볼 수 있습니다. 다음은 간단한 예입니다. CodeProject .NET Remoting.

.NET 3.5를 사용하는 경우 Remoting이 서서히 쓸모 없게되므로 WCF로 가야합니다. 다시 말하지만, 주위에 많은 examples for WCF가 있습니다.

2

저는 Windows 서비스, 콘솔 응용 프로그램 및 Windows 양식간에 작동하는 빠르고 쉬운 IPC를위한 자체 공개 소스 라이브러리를 만들었습니다.

기존 IPC 구현에 비해 몇 가지 장점이 있으며 구성이 필요하지 않습니다.

here을 참조하십시오.

관련 문제