示例#1
0
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);
}
示例#2
0
/**
 * 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();
}