본문 바로가기

DEVELOPMENT/ANDROID

[android] C 서버와 소켓통신

C 서버는 http://argument.tistory.com/95

참고.


MainActivity.java


  1. package com.example.sockest;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.io.PrintWriter;
  8. import java.net.Socket;
  9.  
  10. import android.app.Activity;
  11. import android.os.Bundle;
  12. import android.util.Log;
  13. import android.view.View;
  14. import android.widget.EditText;
  15. import android.widget.Toast;
  16.  
  17. public class MainActivity extends Activity
  18. {
  19.    
  20.     private String return_msg;
  21.     private EditText mEt;
  22.  
  23.     @Override
  24.     public void onCreate(Bundle savedInstanceState)
  25.     {
  26.         super.onCreate(savedInstanceState);
  27.         setContentView(R.layout.activity_main);
  28.        
  29.         initData();
  30.  
  31.     }
  32.    
  33.     public void initData()
  34.     {
  35.         mEt = (EditText) findViewById(R.id.EditText01);
  36.     }
  37.    
  38.     public void onClickBtn(View v)
  39.     {
  40.         Toast toast = Toast.makeText(getApplicationContext(), mEt.getText().toString()0);
  41.         toast.show();
  42.         TCPclient tcpThread = new TCPclient(mEt.getText().toString());
  43.         Thread thread = new Thread(tcpThread);
  44.         thread.start();
  45.     }
  46.    
  47.     private class TCPclient implements Runnable
  48.     {
  49.         private static final String serverIP = "서버 아이피주소 입력(000.000.000.000)";
  50.         private static final int serverPort = 9999;    //포트번호
  51.         private Socket inetSocket = null;
  52.         private String msg;
  53.  
  54.         // private String return_msg;
  55.         public TCPclient(String _msg)
  56.         {
  57.             this.msg = _msg;
  58.         }
  59.  
  60.         public void run()
  61.         {
  62.             // TODO Auto-generated method stub
  63.             try
  64.             {
  65.                 Log.d("TCP""C: Connecting...");
  66.                
  67.                 inetSocket = new Socket(serverIP ,serverPort );
  68.                 //inetSocket.connect(socketAddr);
  69.  
  70.                 try
  71.                 {
  72.                     Log.d("TCP""C: Sending: '" + msg + "'");
  73.                     PrintWriter out = new PrintWriter(new BufferedWriter(
  74.                             new OutputStreamWriter(inetSocket.getOutputStream()))true);
  75.                     out.println(msg);
  76.  
  77.                     BufferedReader in = new BufferedReader(
  78.                             new InputStreamReader(inetSocket.getInputStream()));
  79.                     return_msg = in.readLine();
  80.  
  81.                     Log.d("TCP""C: Server send to me this message -->"
  82.                             + return_msg);
  83.                 }
  84.                 catch (Exception e)
  85.                 {
  86.                     Log.e("TCP""C: Error1", e);
  87.                 }
  88.                 finally
  89.                 {
  90.                     inetSocket.close();
  91.                 }
  92.             }
  93.             catch (Exception e)
  94.             {
  95.                 Log.e("TCP""C: Error2", e);
  96.             }
  97.         }
  98.     }
  99. }


activity_main.xml


  1.  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.    android:layout_width="fill_parent"
  4.    android:layout_height="fill_parent"
  5.    android:orientation="vertical" >
  6.  
  7.     <EditText
  8.        android:id="@+id/EditText01"
  9.        android:layout_width="fill_parent"
  10.        android:layout_height="wrap_content" />
  11.  
  12.     <Button
  13.        android:id="@+id/Button01"
  14.        android:layout_width="wrap_content"
  15.        android:layout_height="wrap_content"
  16.        android:text="Send"
  17.        android:onClick="onClickBtn"/>
  18.  
  19. </LinearLayout>


AndroidManifest.xml

인터넷 사용을 위해 권한 추가


  1. <uses-permission android:name="android.permission.INTERNET" />