示例#1
0
bool X_IsSockaddrEqualsInetSocketAddress(JNIEnv* env, sockaddr* sockAddr,
        jobject socketAddress) {

    CHK_NUL_RET_FLS(env, "env");
    CHK_NUL_RET_FLS(sockAddr, "sockAddr");
    CHK_NUL_RET_FLS(socketAddress, "socketAddress");

    sockaddr_in* sockAddrIn = (sockaddr_in*) sockAddr;

    jint address1 = ntohl(sockAddrIn->sin_addr.s_addr);
    jint port1 = ntohs(sockAddrIn->sin_port);

    jobject objInetAddress = env->GetObjectField(socketAddress,
                             isa_InetAddressID);

    CHK_NUL_RET_FLS(objInetAddress, "objInetAddress");

    jint address2 = env->GetIntField(objInetAddress, ia_AddressID);
    jint port2 = env->GetIntField(socketAddress, isa_PortID);

    if (address1 == address2 && port1 == port2) {
        return true;
    }

    return false;

}
示例#2
0
bool X_IsSockaddrEqualsInetSocketAddress(JNIEnv* env, sockaddr* sockAddr,
		jobject socketAddress) {

	CHK_NUL_RET_FLS(env, "env");
	CHK_NUL_RET_FLS(sockAddr, "sockAddr");
	CHK_NUL_RET_FLS(socketAddress, "socketAddress");

	sockaddr_in* sockAddrIn = (sockaddr_in*) sockAddr;

	jint address1 = ntohl(sockAddrIn->sin_addr.s_addr);
	jint port1 = ntohs(sockAddrIn->sin_port);

	jobject objInetAddress = env->CallObjectMethod(socketAddress,
			jdk_clsInetSocketAddress_getAddressID);

	CHK_NUL_RET_FLS(objInetAddress, "objInetAddress");

	// FIXME private field access
	jint address2 = env->GetIntField(objInetAddress, ia_AddressID);
	jint port2 = env->CallIntMethod(socketAddress,
			jdk_clsInetSocketAddress_getAddressID);

	if (address1 == address2 && port1 == port2) {
		return true;
	}

	return false;

}
示例#3
0
文件: JNIHelpers.cpp 项目: b-cuts/UDT
bool X_IsSockaddrEqualsInetSocketAddress( //
		JNIEnv* env, //
		sockaddr* sockAddr, //
		jobject objSocketAddress //
		) {

	CHK_NUL_RET_FLS(env, "env");
	CHK_NUL_RET_FLS(sockAddr, "sockAddr");
	CHK_NUL_RET_FLS(objSocketAddress, "objSocketAddress");

	sockaddr_in* sockAddrIn = (sockaddr_in*) sockAddr;

	jint address1 = ntohl(sockAddrIn->sin_addr.s_addr);
	jint port1 = ntohs(sockAddrIn->sin_port);

	jint address2 = 0;
	jint port2 = env->CallIntMethod(objSocketAddress,
			jdk_InetSocketAddress_getPort);

	jobject objInetAddress = env->CallObjectMethod(objSocketAddress,
			jdk_InetSocketAddress_getAddress);
	CHK_NUL_RET_ERR(objInetAddress, "objInetAddress");

	const int rv = X_ConvertInetAddressToInteger(env, objInetAddress,
			&address2);
	if (rv == JNI_ERR) {
		return false;
	}

	if (address1 == address2 && port1 == port2) {
		return true;
	}

	return false;

}