我正在尝试构建一个Android应用程序,它使用.net.sockets连接到服务器并从中发送/接收数据。 发送数据工作正常,但是当收到数据时,我给出了一个超出范围错误的参数。 我不确定是什么导致这种情况,具有相同代码的Windows窗体应用程序工作正常。 我希望有人可以帮助我。
这是我的代码:
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 :(得分:0)
ClientSock.ReceiveBufferSize与您传入的缓冲区无关。使用inStream.Length作为Socket.Read的第三个参数。
答案 1 :(得分:0)
您可以将inStream大小更改为
byte[] inStream = new byte[ClientSock.ReceiveBufferSize];
serverStream.Read(inStream, 0, (int)ClientSock.ReceiveBufferSize);
并且在服务器类中使用相同的东西