C# 使用套接字与MonoDroid传输数据
我正试图通过使用Monodroid的Android向服务器发送一些信息 代码如下: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
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
)。只要两者都一样,你就可以了。