H!
У меня есть источник на C, который использует метод connect(peer->fd, (struct sockaddr *)dst->sockaddr, sizeof(struct sockaddr_in));
C. Я использую NDK и делаю JNI.
Мое приложение представляет собой модуль msrp, который содержит сервер и клиент. Этот метод является частью клиента.
Исходный фрагмент:
/* We're going to be the client, connect to the other peer */
dst->sockaddr = calloc(1, sizeof(dst->sockaddr));
dst->sockaddr->sin_family = AF_INET;
dst->sockaddr->sin_port = htons(dst->port);
if(inet_aton(dst->address, &(dst->sockaddr->sin_addr)) == 0) { /* Not a numeric IP... */
struct hostent *host = gethostbyname(dst->address); /* ...resolve name */
if(!host) {
local_events(MSRP_ERROR, "Invalid host for address %s",
dst->address ? dst->address : "???.???.???.???");
return -1;
}
dst->sockaddr->sin_addr = *(struct in_addr *)host->h_addr_list;
}
printf("----[msrp_peer_connect]---- dst->sockaddr->sin_family: %d\n", dst->sockaddr->sin_family);
printf("----[msrp_peer_connect]---- dst->sockaddr->sin_port: %d\n", dst->sockaddr->sin_port);
printf("----[msrp_peer_connect]---- address_lenght: %d\n", sizeof(struct sockaddr_in));
printf("----[msrp_peer_connect]---- socket description: %d\n", peer->fd);
if(connect(peer->fd, (struct sockaddr *)dst->sockaddr, sizeof(struct sockaddr_in)) address, dst->port);
return -1;
}
и результат:
----[msrp_peer_connect]---- dst->sockaddr->sin_family: 2
----[msrp_peer_connect]---- dst->sockaddr->sin_port: 34330
----[msrp_peer_connect]---- address_lenght: 16
----[msrp_peer_connect]---- socket description: 5
Я добавил в AndroidManifest.xml.
Оригинальный исходный код: libmsrp
Спасибо