Этот вопрос уже задали здесь: IP-адрес NSNetservice
и здесь: iPhone: Добрый день IP-адрес NSNetService и порт
Я использовал обоих из тех для получения, где я в теперь. Моей проблемой является следующий метод, который я имею, не вполне работает:
- (NSString *)getStringFromAddressData:(NSData *)dataIn {
struct sockaddr_in *socketAddress = nil;
NSString *ipString = nil;
socketAddress = (struct sockaddr_in *)[dataIn bytes];
ipString = [NSString stringWithFormat: @"%s",
inet_ntoa(socketAddress->sin_addr)]; ///problem here
return ipString;
}
Это дает ошибку сборки, говоря и "Разыменовывая указатель на неполный тип" и "Неявное объявление функции 'inet_ntoa'" на той же строке.
Я проверил, и я не думаю, что пропускаю некоторый тип платформы для получения inet_ntoa
работать. Какая-либо идея, что я делаю неправильно?спасибо.
Вы также можете сделать это с помощью формата boost::, который, как я нахожу, часто сохраняет ввод:
std::cout << boost::format("%08x\n") % 0xe8a00;
Это также позволяет для некоторых хорошо код повторного использования, если у вас есть несколько мест вы должны сделать одно и то же форматирование:
boost::format hex08("%08x"); std::cout << hex08 % 0xe8aa << std::endl;-121--4716194-
Это также относится к дубликатам (возвращает одну строку для каждого user_id):
SELECT *
FROM (
SELECT u.*, FIRST_VALUE(u.rowid) OVER(PARTITION BY u.user_id ORDER BY u.date DESC) AS last_rowid
FROM users u
) u2
WHERE u2.rowid = u2.last_rowid
-121--1789548- Если вы получаете неявное объявление inet_ntoa, вам, вероятно, потребуется
#include <arpa/inet.h>
(Для получения этой информации и более подробной информации об этой функции вы можете обратиться к человеку inet_ntoa)