2013-08-22 82 views
-1

我正在使用C#應用程序處理生物測定系統。 Sdk通過端口2100上的TCP/IP提供連接,並通過接收和發送字符串進行通信。套接字寫入無法正常工作c#

我的類:

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只理解我的請求)。

回答

0

您可能需要在開始閱讀前使用_serverStream.Flush()刷新流。

另一個問題可能是你的問題,你說你需要連接到端口21000,但在你的代碼連接到2100,這可能是在任何地方一個錯字,但應該是固定的;-)


除了刷新流,你的服務器可能還在等待「消息結束」指示符?

+0

對不起,端口是2100.我注意到的一件事是,當它執行套接字寫入時,SDK不會執行任何操作。沖洗不起作用 –

+0

服務器是否期望您沒有發送某些「消息結束」字符序列?也許它正在等待更多的投入。 –

+0

是的!服務器正在等待\ n,所以我發送了一個Environment.NewLine,它工作了!謝謝 –