2017-03-08 9 views
0

私は、別のマシン上で実行されているアプリケーションから信号を受信するまで、特定のポート番号をリッスンするサービスを作成しています。両方ともデフォルトのポート番号が割り当てられますが、競合解消のためにポート番号を変更する機能が必要になります。WPFアプリケーションで制御されるWindowsサービス

私の問題は、GUIなしでサービス内でこれを行う方法です。そのため、サービスがリッスンしているポート番号を更新する単純な設定アプリケーションを作成すると仮定しています。

私の質問は、アプリケーションとサービスの間の通信を円滑にする最良の方法は何ですか?私はWCFで少し読んだ。私はより多くの研究に焦点を当てる必要があるのですか?

+0

"ダイナミックポート"を探したり、サービスを実行するユーザーにポートを登録して、そのユーザーだけがこのポートを使用できるようにする必要があります。 – Rabban

+0

あなたはポート番号だけを必要とするのでしょうか、それとも今後サービスが受けるべき情報はもっとたくさんありますか?サービスとWPFアプリケーションの両方が同じマシンにありますか? –

+0

ポート番号だけを変更する必要があり、両方とも同じマシン上にある。私は "Dyanmic Port"について知りませんでしたので、私はそれを調べることができます。 – MutantKeyboard

答えて

0

SignalRを使用して、WPFとWindowsサービス間で通信することができます。

0

あなたのような、あなたが何かを行うことができます接続するためのTCPソケットを使用している場合:ものはソケットを作成中にポート番号を指定していけない場合OSが使用可能なデフォルトが割り当てられますよりも、ということである

private TcpClient GetClient() 
    { 
     TcpClient client = null; 

     if (!string.IsNullOrEmpty(IpAddress)) // Get IpAddress from config 
     { 
      IPAddress ipAddress = null; 
      IPAddress.TryParse(IpAddress, out ipAddress); 
      if (ipAddress != null) 
      { 
       int intIpAddress = BitConverter.ToInt32(ipAddress.GetAddressBytes(), 0); 
       IPAddress clientBindingIp = new IPAddress(BitConverter.GetBytes(intIpAddress)); 
       IPEndPoint endpoint = new IPEndPoint(clientBindingIp, 0); // Specify 0 for OS to automatically assign, or read from config here 
       client = new TcpClient(endpoint); 
      } 
     } 
     return client; 
    } 

ポート番号。または、あなたが望むならConfigからそれを読むことができます

+0

デフォルトのポート番号を使用することができます。ありがとう。 – MutantKeyboard

関連する問題