-1

私は、C# アプリケーションを使用して生体測定システムに取り組んでいます。Sdk はポート 2100 で TCP/IP 経由の接続を提供し、文字列を送受信して通信します。

私のクラス:

class Biometry
{
    private System.Net.Sockets.TcpClient _clientSocket = new System.Net.Sockets.TcpClient();

    public Biometry() {
        //connect to socket
        _clientSocket.Connect("127.0.0.1", 2100);
        _clientSocket.ReceiveTimeout = 9000;
    }

    public String identify(String msg) {
        //get network stream
        NetworkStream _serverStream = _clientSocket.GetStream();

        //send an array of bites that represents a string(encoded)
        System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding();
        byte[] outStream = System.Text.Encoding.ASCII.GetBytes(msg);
        _serverStream.Write(outStream, 0, outStream.Length);


        //reads the response from networkStream
        byte[] inStream = new byte[10025];
        _serverStream.Read(inStream, 0, (int)_clientSocket.ReceiveBufferSize);
        string returndata = System.Text.Encoding.ASCII.GetString(inStream);

        _serverStream.Close();
        return returndata;

    }
}

問題は次のとおりです。動作していません!! バイオメトリは、アプリケーションを閉じたとき (接続が閉じられたとき) にのみ機能します (SDK は私の要求を理解するだけです)。

4

1 に答える 1

0

を使用して読み取りを開始する前に、ストリームをフラッシュする必要がある場合があります_serverStream.Flush()

別の問題は、質問ではポート 21000 に接続する必要があると言っていますが、コードでは 2100 に接続している可能性があります。これはどちらの場所でもタイプミスである可能性がありますが、修正する必要があります ;-)


ストリームのフラッシュに加えて、サーバーは「メッセージの終わり」インジケーターを待っている可能性がありますか?

于 2013-08-22T14:05:25.577 に答える