C# 使用套接字与MonoDroid传输数据

C# 使用套接字与MonoDroid传输数据,c#,android,sockets,mono,xamarin.android,C#,Android,Sockets,Mono,Xamarin.android,我正试图通过使用Monodroid的Android向服务器发送一些信息 代码如下: public void sendSomething() { sock = new TcpClient(); sock.Connect(Dns.GetHostAddresses("a.domain.com"), 7777); String d; d = "somedata"; StreamWriter w = new Str

我正试图通过使用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虚拟设备上运行-我使用的是评估版本)时,服务器将看到连接,但没有收到数据

有人知道为什么会这样吗


(编辑为ammend代码)

可能是服务器问题。例如,假设:

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

b) 您的服务器也基于Windows,并执行
ReadLine
读取套接字

然后,写入(Unix
\n
)和读取(Windows
\r\n\
)之间的
换行符可以解释为什么服务器不报告正在读取的内容


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

其他客户端应用程序是否可以从虚拟设备工作。例如,您能否从浏览器访问基本网页?接收电子邮件等?您好,是的,我可以使用设备的内置浏览器访问网页。谢谢,这解决了问题!我改变了:d=“somedata”;to d=“somedata\r\n”;现在开始起作用了,我一整天的头痛都开始减轻了!:)很高兴它做到了:-)您还可以设置
NewLine
属性(从
TextWriter
获取的
StreamWriter
)以匹配Windows新行(或更改服务器应用程序中的
StreamReader
)。只要两者都一样,你就可以了。