04.Anddoid2010. 7. 30. 14:29
반응형

[android-beginners] Sockets with Android.

Android_n00b
Fri, 02 Oct 2009 08:59:43 -0700

Hi
I'm implementing a program which uses sockets to communicate between
the client and server. I am getting this to work fine with just a
message. However, I want to have an EditText field in my application,
which when I hit a 'Send' button, sends the text from the field to my
server and logs it. I am trying to implement this, but my program
always crashes. Any help would be appreciated. Here is my code:

Android Client:
public class SocketTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Thread sThread = new Thread(new TCPServer());
        Thread cThread = new Thread(new TCPClient());
        sThread.start();
        try {
               Thread.sleep(1000);
          } catch (InterruptedException e) { }

          cThread.start();
    }
}

TCP Server:
public class TCPServer implements Runnable{

    public static final String SERVERIP = "127.0.0.1";
    public static final int SERVERPORT = 8888;
    public void run() {
         try {
              Log.d("TCP", "S: Connecting...");

              ServerSocket serverSocket = new ServerSocket
(SERVERPORT);
              while (true) {
                 Socket client = serverSocket.accept();
                 Log.d("TCP", "S: Receiving...");
                 try {
                      BufferedReader in = new BufferedReader(new
InputStreamReader(client.getInputStream()));
                      String str = in.readLine();
                      Log.d("TCP", "S: Received: '" + str + "'");
                    } catch(Exception e) {
                        Log.e("TCP", "S: Error", e);
                    } finally {
                         client.close();
                         Log.d("TCP", "S: Done.");
                    }

              }

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

TCP Client:
 public class TCPClient extends Activity implements Runnable {

    final EditText msg = (EditText) findViewById(R.id.message);
    final Button sendButton = (Button) findViewById(R.id.sendserver);

    public void run() {
        sendButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                try {

                                   InetAddress serverAddr = 
InetAddress.getLocalHost();
                                   Log.d("TCP", "C: Connecting...");
                                   Socket socket = new Socket(serverAddr,
TCPServer.SERVERPORT);
                                   String message = msg.toString();
                                       try {
                                        Log.d("TCP", "C: Sending: '" + message 
+ "'");
                                        PrintWriter out = new PrintWriter( new
BufferedWriter( new OutputStreamWriter(socket.getOutputStream
())),true);

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

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

    }
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---
Posted by 1010