【问题标题】:Using Sockets to transfer Data with MonoDroidMonoDroid 使用 Sockets 传输数据
【发布时间】:2011-12-12 15:05:25
【问题描述】:

我正在尝试使用 Monodroid 将一些信息发送到带有 Android 的服务器。

代码如下:

public void sendSomething()
    {
        sock = new TcpClient();
        sock.Connect(Dns.GetHostAddresses("a.domain.com"), 7777);

        String d;
        d = "somedata";

        StreamWriter w = new StreamWriter(sock.GetStream());
        // StreamReader r = new StreamReader(sock.GetStream());

        w.WriteLine(d);
        w.Flush();

        sock.Close();
     }

如果我在 winforms 应用程序中运行完全相同的例程,它可以正常工作,但是当链接到 monodroid 中的按钮单击时(在 android 虚拟设备上运行 - 我正在使用评估版),服务器将看到连接但是没有收到数据。

有人知道为什么会这样吗?

(编辑修改代码)

【问题讨论】:

  • 其他客户端应用程序是否在虚拟设备上工作。例如。您可以从浏览器访问基本网页吗?接收电子邮件等?
  • 嗨,是的,我可以使用设备的内置浏览器访问网页

标签: c# android sockets mono xamarin.android


【解决方案1】:

可能是服务器问题。例如。让我们假设:

a) 您在 Windows / MS.NET(而不是 Mono / Linux 或 OSX)上运行的 winform 应用程序;

b) 您的服务器也是基于 Windows 的,并且使用 ReadLine 来读取套接字

那么写入 (Unix \n) 和读取 (Windows \r\n\) 之间的 NewLine 可以解释为什么服务器不报告正在读取的内容。

您能告诉我们您是如何读取服务器上的数据的吗? (编辑你的问题)

【讨论】:

  • 感谢这解决了问题!我改变了:d = "somedata";到 d = "somedata\r\n";现在开始工作了,我一整天的头痛开始好转了! :)
  • 很高兴 :-) 您还可以设置 NewLine 属性(StreamWriterTextWriter 获取)以匹配 Windows 新行(或更改服务器中的 StreamReader应用)。只要两者相同,就可以了。
猜你喜欢
  • 2019-08-14
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多