MonoDroid net.Sockets

时间:2011-12-20 11:23:24

标签: .net sockets xamarin.android

我正在尝试构建一个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);

我希望有人可以帮助我!

2 个答案:

答案 0 :(得分:0)

ClientSock.ReceiveBufferSize与您传入的缓冲区无关。使用inStream.Length作为Socket.Read的第三个参数。

答案 1 :(得分:0)

您可以将inStream大小更改为

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

并且在服务器类中使用相同的东西