首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MonoDroid net.Sockets

MonoDroid net.Sockets
EN

Stack Overflow用户
提问于 2011-12-20 19:23:24
回答 2查看 429关注 0票数 0

我正在尝试建立一个安卓应用程序,它使用.net.sockets连接到一个服务器,并发送/接收数据。发送数据运行良好,但是当接收到数据时,会给我一个参数超出范围的错误。我不太确定是什么导致了这种情况,使用相同代码的Windows窗体应用程序工作得很好。我希望有人能帮助我。

这是我的代码:

代码语言:javascript
复制
            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);

我希望有人能帮我解决这个问题!

EN

回答 2

Stack Overflow用户

发布于 2011-12-24 02:56:18

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

票数 0
EN

Stack Overflow用户

发布于 2012-06-06 22:22:46

您可以将inStream大小更改为

代码语言:javascript
复制
byte[] inStream = new byte[ClientSock.ReceiveBufferSize];
serverStream.Read(inStream, 0, (int)ClientSock.ReceiveBufferSize);

并在服务器类中从相同的东西上岸

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8574654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档