2011-10-21 40 views
2

我想发送一些信息到Android使用Monodroid的服务器。使用套接字传输数据与MonoDroid

的代码如下:

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代码)

+0

其他客户端应用程序是否在虚拟设备上工作?例如。你能从浏览器访问一个基本的网页吗?接收电子邮件等? –

+0

嗨,是的,我可以访问设备的内置浏览器的网页 – Pleng

回答

1

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

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

B)你的服务器是基于Windows也和没有一个ReadLine读取插槽

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

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

+0

谢谢你解决了这个问题! 我改变了: d =“somedata”; 至 d =“somedata \ r \ n”; 它现在正在工作我的一天很长一段时间头痛开始清理! :) – Pleng

+0

很高兴它做到了:-)你也可以设置'NewLine'属性(StreamWriter从'TextWriter'获得)以匹配Windows新行(或者更改服务器应用程序中的'StreamReader')。只要两者相同,你应该没问题。 – poupou