C#到Android聊天客户端
我使用C#创建了一个局域网聊天信息应用程序,它将运行该程序的所有客户端连接到我计算机上的服务器 我现在正试图通过Xamarin Studio将此应用程序转换为android设备 测试时,设备会正确连接到服务器,因为它可以发送一条消息(表示设备已登录),然后将该消息广播到其他客户端 但是,一旦应用程序发送此消息,程序就会立即关闭 在桌面版聊天客户端中,我使用以下代码(在另一个线程上运行): 当显示行“Final test”(最终测试)时,第一次调用它时,此功能即起作用。但是,在此之后,当该方法再次进入此阶段(因为它处于一个永无止境的循环中)时,我会收到一条错误消息,上面说: “[dalvikvm heap]将堆(frag大小写)增长到13.455MB,用于4194308字节分配” “[dalvikvm heap]将堆(frag大小写)增长到21.444MB,用于8388612字节分配” 并且行“Final test”没有显示,因此行“serverStream.Read(inStream,0,buffSize);”正在使应用程序崩溃。我尝试过使用.Flush()和.Close(),但是这些都不起作用 我的代码的发送部分使用“serverSocket.Write()”可以完美地运行,因为其他客户端可以接收消息,那么为什么从服务器读取数据会使应用程序崩溃呢 这是我的第一个android应用程序,所以我想使用一种比从头开始使用java更舒服的语言C#到Android聊天客户端,c#,java,android,sockets,xamarin,C#,Java,Android,Sockets,Xamarin,我使用C#创建了一个局域网聊天信息应用程序,它将运行该程序的所有客户端连接到我计算机上的服务器 我现在正试图通过Xamarin Studio将此应用程序转换为android设备 测试时,设备会正确连接到服务器,因为它可以发送一条消息(表示设备已登录),然后将该消息广播到其他客户端 但是,一旦应用程序发送此消息,程序就会立即关闭 在桌面版聊天客户端中,我使用以下代码(在另一个线程上运行): 当显示行“Final test”(最终测试)时,第一次调用它时,此功能即起作用。但是,在此之后,当该方法再次
提前感谢。意识到此错误是因为我在尝试发送消息时分配了太多内存 简单改变
byte[] inStream = new byte[clientSocket.ReceiveBufferSize];
buffSize = clientSocket.ReceiveBufferSize;
到
byte[] inStream = new byte[clientSocket.ReceiveBufferSize];
buffSize = clientSocket.ReceiveBufferSize;
byte[] inStream = new byte[4096];
buffSize = 4096;