NDK를 사용하여 Socket 통신을 구현하려 합니다.

 

아래와 같이 SocketClient를 스마트폰에 설치후 실행시 socket(AF_INET, SOCK_DGRAM, 0);  

가 -1을 리턴합니다.

 

고수님들의 도움 부탁드립니다.

 

1. 아래는 SocketClient.cpp 입니다.

-----------------------------------------------------

 JNIEXPORT jint JNICALL
 Java_org_example_ndk_HelloNniActivity_add(JNIEnv* env, jobject obj, jint x, jint y)
 {
    int sockfd;
    struct data add_data;   

    struct sockaddr_in serveraddr, clientaddr;

    clilen = sizeof(clientaddr);


    sockfd = socket(AF_INET, SOCK_DGRAM, 0);   <- 리턴값이 계속 -1로 떨어지네요
    if (sockfd < 0)
    {
        return sockfd;
    }
     
  return 1;
 }

 

2. 아래는 AndroidManifest.xml 입니다.

-----------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.example.ndk"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <use-permission android:name="android.permission.INTERNET"></use-permission>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".HelloNniActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

3. 아래는 Activity.java 입니다.

-----------------------------------------------------

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        TextView tv = new TextView(this);
            
        int x = 0;
        int y = 0;
       
        int z = add(x, y);
       
        tv.setText("The Result is  " + z);

        setContentView(tv);
    }
   
    // A native function
    public native String stringFromJNI();
    public native int add(int x, int y);
   
    static{
     System.loadLibrary("SocketClient");
    }

 

4. 아래는 Android.mk 입니다.

-----------------------------------------------------
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NFCSendSvr
LOCAL_SRC_FILES := NFCSendSvr.cpp

include $(BUILD_SHARED_LIBRARY)