0

問題: サーバーは、SerialPort コマンド (例: "S") をクライアントに送信し、クライアントからポートを受信する必要があります。

例: サーバーは "S" を送信し、クライアントから "N" を受信するため、サーバーは別の "S" を送信する必要があります。!= "N" を受信した場合は、"r01" などを送信します。

クライアントにメッセージを送信できますが、回答を受信して​​保存/使用することはできません。

私がこれまでに試したこと:

.) 受信した情報を serv.connectedClients[ID].receive に保存します

サーバー: 労働者階級:

 public void doSomething(Service serv, string ID)
    { 
       serv.SendMessageToClient(client_name, "S");   //send first message                     
        data = serv.connectedClients[ID].receive.ToString(); //the .receive is empty but should have the clients answer stored
       if(data != ""){
          serv.SendMessageToClient(client_name, "r01");  //send second message
          serv.connectedClients[ID].Information = serv.connectedClients[ID].receive.ToString();
          }
    }

Service.cs で:

  public void getPortMsg(string msg)
    { 
        connectedClients[OperationContext.Current.Channel.SessionId].receive = msg;
    }

クライアントで:

 void callback_OnMessageReceivedEvent(string message)
    {
      string portmsg = "";
      portmsg = rfid.send(message); //portmsg gets the port.readline info
       client.getPortMsg(portmsg); //send portmsg to server

    }

そして rfid.send:

 public string send(string senden)
    {

        string data = "";
        port.WriteLine(senden);
        data = port.ReadLine();

            return data;
      }

順序: サーバーがクライアントにメッセージを送信します。クライアントはメッセージを受信し、応答を含むサービス メソッドを呼び出します。サーバーはこの回答を使用する必要がありますが、回答を得る前に次のメッセージを送信します。

誰かが答えを知っていることを願っています。

4

1 に答える 1

0

答えがあります。これが問題を解決する最善の方法だとは思いませんが、うまくいきます:

サーバーはクライアントにメッセージとメソッドの名前を送信します。

クライアントはメッセージを処理し、サーバーへの応答とメソッドの名前を書き込みます。

サーバーは、応答をどう処理するかを認識し、正しいメソッドを呼び出します。

コード例:

サーバ:

public void methodA(){
   sendToClient("i want an answer",methodA);
}

クライアント:

 public void callback_messageFromServer(string msg,string location){
     string answer = workWithMsg(msg);
     client.sendAnswer(answer,location);
 }

サーバ:

public void sendAnswer(string msg, string location) {
      if(location == "methodA")
          methodB(msg);
 }

同じメソッドを呼び出すには、int カウントと switch(count) を使用します。誰かの役に立てば幸いです^^

よろしくお願いします

于 2012-08-28T10:56:04.660 に答える