私はWCF-WWSAPIを学習しており、ビジュアルC ++クライアントとサービス上のC#を使用してTCPおよびデュプレックス呼び出しでICalculatorの例を開発しようとしています...基本的に私のクライアントはプログラムがサービス番号に555を追加しようとしており、サービスは呼び出しますクライアントはコールバックを介して画面に結果を出力します...client->service dommunicationsは正常に機能し、クライアントはAddTo関数を呼び出すサービスに値を送信できます。これは機能します。しかし、何らかの理由で、私のクライアントはサービスから印刷するための値を受け取っていません...
これは私のクライアントが行うことです:
hr = WsCreateMessageForChannel(
threadInfo->channel,
NULL,
0,
&message,
error);
if (FAILED(hr))
{
PrintError(hr, error);
}
const WS_MESSAGE_DESCRIPTION* messageDescriptions[] = {
// Result callback message
&tempuri_org_wsdl.messages.ICalculatorDuplex_Equals_OutputCallbackMessage, //<-- CHECK ON TEMPURI.ORG.WSDL.H
// Equation callback message
&tempuri_org_wsdl.messages.ICalculatorDuplex_Equation_OutputCallbackMessage //<-- CHECK ON TEMPURI.ORG.WSDL.H
};
for (;;) // to receive all potential callback messages in an infinite loop
{
void* callbackBody = NULL;
ULONG index = 0;
hr = WsReceiveMessage(
threadInfo->channel,
message,
messageDescriptions,
WsCountOf(messageDescriptions),
WS_RECEIVE_OPTIONAL_MESSAGE,
WS_READ_REQUIRED_POINTER,
heap,
callbackBody, <===this VALUE is 0x000000 from the server and I send an int
sizeof(callbackBody),
&index, // The returned index is used to determine which callback is received
NULL,
error);
これは、コールバックを取得するためのサーバーコンストラクターです。
public CalculatorService()
{
result = 0.0D;
equation = result.ToString();
callback = OperationContext.Current.GetCallbackChannel<ICalculatorDuplexCallback>();
}
これは、コールバックとのコントラクトに関する私の関数です。
public void AddTo(double n)
{
Console.WriteLine("Dentro de AddTo");
result += n;
equation += " + " + n.ToString();
callback.Equals(result);
}
どんな助け/提案も大歓迎です
どうもありがとうございます
マヌエル