2011-12-20 69 views
0

即時通訊嘗試建立一個Android應用程序,它使用.net.sockets來與服務器建立連接並從中發送/接收數據。 數據的發送工作正常,但是當收到它時給了我一個超出範圍錯誤的參數。 即時通訊不確定是什麼導致這種情況,具有相同代碼的Windows窗體應用程序正常工作。 我希望有人能幫助我。MonoDroid net.Sockets

這是我的代碼:

  Android.Util.Log.Info("Starting Client", "Starting Client"); 
      TcpClient ClientSock = new TcpClient(); 
      ClientSock.Connect(ip, port); 
      NetworkStream serverStream = ClientSock.GetStream(); 

      //sending command 
      Android.Util.Log.Info("Starting Data", "Sending Data"); 
      byte[] outStream = System.Text.Encoding.ASCII.GetBytes("Heres Data"); 
      serverStream.Write(outStream, 0, outStream.Length); 
      serverStream.Flush(); 
      Android.Util.Log.Info("Starting Data", "Receiving Data"); 
      //receiving data 
      byte[] inStream = new byte[10025]; 
      serverStream.Read(inStream, 0, (int)ClientSock.ReceiveBufferSize); 
      string returndata = System.Text.Encoding.ASCII.GetString(inStream); 
      Android.Util.Log.Info("Return Data =", returndata); 

我希望有人能幫助我!

+0

您是否嘗試過(只是診斷)用的值來代替(INT)ClientSock.ReceiveBufferSize改變inStream中尺寸分鐘(1000,size_of_server_message)? – 2011-12-20 11:27:36

+0

剛纔試過,沒有變化。 – Kage 2011-12-20 11:40:30

+0

請添加完整的異常消息和堆棧跟蹤,並告訴我們哪些代碼行與其相關。 – poupou 2011-12-20 16:37:42

回答

0

ClientSock.ReceiveBufferSize與您傳遞的緩衝區無關。使用inStream.Length作爲Socket.Read的第三個參數。

0

你可以到

byte[] inStream = new byte[ClientSock.ReceiveBufferSize]; 
serverStream.Read(inStream, 0, (int)ClientSock.ReceiveBufferSize); 

和服務器類化妝岸從同樣的事情