KNIEXPORT KNI_RETURNTYPE_INT Java_com_sun_cldc_io_j2me_socket_Protocol_open0() { static int inited = 0; if (!inited) { pcsl_network_init(); inited = 1; } int fd = -1; // (1) Get the hostname, and convert it to IP address KNI_StartHandles(1); { KNI_DeclareHandle(hostname_object); KNI_GetParameterAsObject(1, hostname_object); // hostname is always NUL terminated. See socket/Protocol.java for detail. char *hostname = (char*) SNI_GetRawArrayPointer(hostname_object); int port = KNI_GetParameterAsInt(2); unsigned char addr[4]; int len; int status; void *context; void *handle; status = pcsl_network_gethostbyname_start( hostname, addr, sizeof(addr), &len, &handle, &context); if (status == PCSL_NET_WOULDBLOCK) { do { status = pcsl_network_gethostbyname_finish(addr, sizeof(addr), &len, &handle, &context); } while (status == PCSL_NET_WOULDBLOCK); } if (status != PCSL_NET_SUCCESS) { goto done; } // (2) Make the connection status = pcsl_socket_open_start( addr, port, &handle, &context); if (status == PCSL_NET_WOULDBLOCK) { do { status = pcsl_socket_open_finish(handle, context); } while (status == PCSL_NET_WOULDBLOCK); } if (status != PCSL_NET_SUCCESS) { goto done; } fd = (int)handle; } done: KNI_EndHandles(); KNI_ReturnInt(fd); }
/** * Initialize datagram support for the given protocol. */ WMA_STATUS init_jsr120() { WMA_STATUS status; /* Initialize networking required for UDP emulator */ if (pcsl_network_init() != PCSL_NET_SUCCESS) { return WMA_NET_IOERROR; } /* Initialize WMA_SMS_PROTOCOL */ /* Check for the SMS-configured datagram input port number. */ load_var_jint_env_prop(&smsInPortNumber, "JSR_120_SMS_PORT", "com.sun.midp.io.j2me.sms.DatagramPortIn"); status = jsr120_datagram_open(WMA_SMS_PROTOCOL, smsInPortNumber); if (status != WMA_NET_SUCCESS) { return WMA_NET_IOERROR; } /* Check for the SMS-configured datagram output port number. */ load_var_jint_env_prop(&smsOutPortNumber, "JSR_120_SMS_OUT_PORT", "com.sun.midp.io.j2me.sms.DatagramPortOut"); /* Get WMA host name */ load_var_char_env_prop(&targetHost, "JSR_120_DATAGRAM_HOST", "com.sun.midp.io.j2me.wma.DatagramHost"); if (targetHost == NULL) { targetHost = targetHostDefault; } /* Initialize WMA_CBS_PROTOCOL */ /* Check for the CBS-configured datagram input port number. */ load_var_jint_env_prop(&cbsInPortNumber, "JSR_120_CBS_PORT", "com.sun.midp.io.j2me.cbs.DatagramPortIn"); status = jsr120_datagram_open(WMA_CBS_PROTOCOL, cbsInPortNumber); if (status != WMA_NET_SUCCESS) { return WMA_NET_IOERROR; } #if ENABLE_JSR_205 /* Initialize WMA_MMS_PROTOCOL */ /* Check for the MMS-configured datagram input port number. */ load_var_jint_env_prop(&mmsInPortNumber, "JSR_205_MMS_PORT", "com.sun.midp.io.j2me.mms.DatagramPortIn"); status = jsr120_datagram_open(WMA_MMS_PROTOCOL, mmsInPortNumber); if (status != WMA_NET_SUCCESS) { return WMA_NET_IOERROR; } /* Check for the MMS-configured datagram output port number. */ load_var_jint_env_prop(&mmsOutPortNumber, "JSR_205_MMS_OUT_PORT", "com.sun.midp.io.j2me.mms.DatagramPortOut"); #endif return WMA_NET_SUCCESS; }
// socketProtocol.c (phoneme_feature\midp\src\protocol\socket\reference\native) KNIEXPORT KNI_RETURNTYPE_VOID Java_com_sun_midp_io_NetworkConnectionBase_initializeInternal(void) { ANC_INIT_NETWORK_INDICATOR; pcsl_network_init(); KNI_ReturnVoid(); }