-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 回答