【发布时间】:2015-08-25 18:09:22
【问题描述】:
我想编写一个简单的应用程序来在服务器 (Windows) 和客户端(在 android 上运行的 Xamarin 应用程序)之间发送文本消息,它可以使用基本的文本命令(如“暂停”、“跳过”、“播放” ...)。
我一直在讨论的设置会像这样工作: 当我启动 android 应用程序时,它会尝试连接到服务器(它们使用 LAN/WiFi 在同一个本地网络中,所以我只使用我的本地 IP)。然后,建立连接后,双方都可以向对方发送消息(客户端 -> 服务器:播放这首歌曲等,服务器 -> 客户端:歌曲完成,未找到歌曲等)。当然,这应该以线程或异步方式完成,这样两个应用程序都不会阻塞它们的 UI。服务器将在后台运行并等待下一条消息,这将触发一个事件来处理所请求的操作。
我已经搜索了如何以对初学者友好的方式执行此操作,但没有找到太多可以使用的方法。我只有异步/线程编程的基本知识,对网络(.net)还不够。我发现的每个解决方案都不是为了让连接保持打开状态,而是为了“读取流、发送答案、关闭连接”(这不是我想要的)或者太复杂了。
我知道有无数可用的教程,但我根本不知道如何在我的场景中使用它们。示例代码或易于理解的关于如何完成诸如保持连接以非阻塞方式打开,以及如何发送和接收完整的、独立的消息的解释,因为我无法完全理解这一点(如果我只是读取固定大小的字节,我怎么能确保得到准确的一条消息?)。
所以,我会感谢每一个向我展示正确方向的提示,例如,许多类中的哪一个最适合用于此(似乎有很多,不知道哪个是适合什么)。如果这个问题看起来相当愚蠢,我深表歉意,但我绝对是这方面的初学者。非常感谢您!
【问题讨论】:
标签: c# .net sockets mono network-programming