Wie man client auf Android hören-server auf C#?

Ich habe einen client auf Android und server auf c#. Der client sendet Nachrichten an server und es ist in Ordnung. Aber ich brauche server zu senden, auf Anfrage die Liste der Ordner und Dateien im angegebenen Verzeichnis und nicht wissen, wie zu tun, dass, da der client nicht alle Nachrichten vom server. Der client ist der Teil des Codes, der bestimmt ist zu hören, funktioniert nicht, die Anwendung einfach stucks, bis ich das schließen der server-Anwendung, dann funktioniert es wieder, aber noch nicht gelesen.
Vielen Dank im Voraus

Client:

package com.app.client.app;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.InputStream;
import java.io.OutputStreamWriter; 
import java.io.InputStreamReader;
import java.io.PrintWriter; 
import java.net.InetAddress; 
import java.net.Socket; 
import java.net.UnknownHostException; 

import android.util.Log; 

public class my_activity extends Activity { 
private TextView txt;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button b = (Button)findViewById(R.id.button1);
    txt = (TextView)findViewById(R.id.textView1);


    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //TODO Auto-generated method stub
        connectSocket("Hello");

        }
    });
} 

private void connectSocket(String a){ 

    try { 
        InetAddress serverAddr = InetAddress.getByName("192.168.1.2"); 
        Log.d("TCP", "C: Connecting..."); 
        Socket socket = new Socket(serverAddr, 4444); 

        message = "1";

        PrintWriter out = null;
        BufferedReader in = null;

        try { 
            Log.d("TCP", "C: Sending: '" + message + "'"); 
            out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); 
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));                

            out.println(message);
            while ((in.readLine()) != null) {
                txt.append(in.readLine());
            }

            Log.d("TCP", "C: Sent."); 
            Log.d("TCP", "C: Done.");               

        } catch(Exception e) { 
            Log.e("TCP", "S: Error", e); 
        } finally { 
            socket.close(); 
        } 

    } catch (UnknownHostException e) { 
        //TODO Auto-generated catch block 
        Log.e("TCP", "C: UnknownHostException", e); 
        e.printStackTrace(); 
    } catch (IOException e) { 
        //TODO Auto-generated catch block 
        Log.e("TCP", "C: IOException", e); 
        e.printStackTrace(); 
    }       
} 
} 

Server:

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;

public class serv {
    public static void Main() {
    try {
    IPAddress ipAd = IPAddress.Parse("192.168.1.2");
     //use local m/c IP address, and 

     //use the same in the client


/* Initializes the Listener */
    TcpListener myList=new TcpListener(ipAd,4444);

/* Start Listeneting at the specified port */        
    myList.Start();

    Console.WriteLine("The server is running at port 4444...");    
    Console.WriteLine("The local End point is  :" + 
                      myList.LocalEndpoint );
    Console.WriteLine("Waiting for a connection.....");
    m:
    Socket s=myList.AcceptSocket();
    Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);

    byte[] b=new byte[100];
    int k=s.Receive(b);

    char cc = ' ';
    string test = null;
    Console.WriteLine("Recieved...");
    for (int i = 0; i < k-1; i++)
    {
        Console.Write(Convert.ToChar(b[i]));
        cc = Convert.ToChar(b[i]);
        test += cc.ToString();
    }

    switch (test)
    {
        case "1":                 
            break;


    }

    ASCIIEncoding asen=new ASCIIEncoding();
    s.Send(asen.GetBytes("The string was recieved by the server."));
    Console.WriteLine("\nSent Acknowledgement");


/* clean up */
    goto m;    
    s.Close();
    myList.Stop();
    Console.ReadLine();

}
catch (Exception e) {
    Console.WriteLine("Error..... " + e.StackTrace);
}    
}

}
  • Tut Console.WriteLine("Recieved..."); gedruckt?
  • Einfach nur neugierig, warum Sie nicht wählen gehen Sie mit einem SOAP-Ansatz, performance?
  • Ich habe die exakt gleiche app (c# server senden, Datei-listings zu android). Ich habe die Quelle aber ich habe aufgehört daran zu arbeiten eine Weile her. Wenn ich nach Hause von der Arbeit poste ich es für Sie (wenn Sie noch nicht die Antwort gefunden, und die mine noch funktioniert).
  • ja, es funktioniert
  • Ich glaube nicht, dass der SEIFE, fand gerade einige tutorials und folgte Ihnen
  • Das wäre toll, vielen Dank, wir freuen uns auf Sie!
  • Tun Log.d("TCP", "C: Sent."); und Console.WriteLine("\nSent Acknowledgement"); geschickt bekommen? Wo wird es aufhören zu schreiben?
  • Ich denke, Konsole.WriteLine("\nSent Bestätigung"); ist eigentlich nicht zu bekommen versandt, sowie Log.d("TCP", "C: Gesendet.");. Ich tippe auf eine Taste auf dem Handy-Bildschirm und stucks im Zustand "gedrückt", bis ich in der Nähe der server-app.
  • Könntest du bitte posten Sie Ihre app, die Sie erwähnt? Ich wäre sehr dankbar.
  • Sicher!!! Gib mir ein bisschen. Ich habe gerade nach Hause, und ich will durch meinen code und stellen Sie sicher, es funktioniert immer noch

InformationsquelleAutor 3Gee | 2011-06-17
Schreibe einen Kommentar