我正在尝试建立一个安卓应用程序,它使用.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);我希望有人能帮我解决这个问题!
发布于 2011-12-24 02:56:18
ClientSock.ReceiveBufferSize与您传入的缓冲区没有任何关系。使用inStream.Length作为Socket.Read的第三个参数。
发布于 2012-06-06 22:22:46
您可以将inStream大小更改为
byte[] inStream = new byte[ClientSock.ReceiveBufferSize];
serverStream.Read(inStream, 0, (int)ClientSock.ReceiveBufferSize);并在服务器类中从相同的东西上岸
https://stackoverflow.com/questions/8574654
复制相似问题