2012-10-13 21 views
7

Ben c şık sunucusunun android istemcisiyle iletişim kurduğu bir uygulama geliştiriyorum. Sunucunun Android tcpClient'e birden çok mesaj göndermesi gerekiyor. Mesaj gönderirken sunucudaki tcpClient Nesnesini kapatmam gerekiyor. aksi halde göndermez. TcpClient kapandığında istemcimle tekrar nasıl iletişim kurabilirim, tcpClient'i kapattığımda birden fazla mesajı nasıl takip edebilirim ve gönderebilirim, yoksa başka bir yolla kapatmadan yollayabilirim. soru henüz belli değil ise, tek bir mesaj easlity gönderirTCP sunucusundan İstemciye (C'den Android'e keskin) birden çok ileti gönderin

aşağıdaki yorum ama zaman İşte

zaman daha fazla ileti göndermek gerekir lütfen sunucuya

//in a thread 
void receivingMessages(object param) 
    { 
     try 
     { 
      var paramArray = (object[])param; 
      var id = paramArray[0]; 
      var client = paramArray[1] as TcpClient; 

      var stream = client.GetStream(); 

      while (true) 
      { 
       byte[] buffer = new byte[2048]; 
       int bytesRead = stream.Read(buffer, 0, 2048); 

       if (bytesRead > 0) 
       { 
        StringBuilder sb = new StringBuilder(); 
        string v = Encoding.ASCII.GetString(buffer); 

        int index = v.IndexOf('\0'); 
        string trimmedXml = v.TrimEnd(new char[] { '\0' }); 

        var root = XDocument.Parse(trimmedXml).Root; 
        //to get the type of xml like it is login register or message 
        string xmlType = root.Name.ToString(); 

        //some checks  
        string result = " server messages"; 
        SendMessage(client, result); 

       } 

       //Thread.Sleep(10); 
      } 
     } 
     catch (Exception) 
     { 

     } 

    } 


    public void SendMessage(TcpClient client, string message) 
    { 

     byte[] buffer = Encoding.ASCII.GetBytes(message); 

     NetworkStream stream = client.GetStream(); 
     stream.Write(buffer, 0, buffer.Length); 

     client.Close(); 
    } 
} 
} 

cevap

3

için kod snippet'idir Bunu deneyin:

public void SendMessage(TcpClient client, string message) 
{ 

    //byte[] buffer = Encoding.ASCII.GetBytes(message); 

    NetworkStream stream = client.GetStream(); 
    StreamWriter writer = new StreamWriter(stream); 
    writer.WriteLine(message); 
    writer.Flush(); 

} 
+0

Bu sorun hangi sorunu çözer? –

+0

@LB Akıntıyı kapatmadan mesajı gönderememiş gibi geliyor, ama açık tutmak istiyor: "kapatmadan gönderimin herhangi bir yolu var ..." bu yüzden yazdım. mesaj, kapanmadan. –

+0

@ 0 _______ 0 hala kapatılamıyor, tcpclient'i kapatmazsa –