На моем сервере у меня есть этот код в данный момент:C - сокет программирования клиент-сервер - Подключение по имени хоста
#define h_addr h_addr_list[0]
serverAddr.sin_port = htons(port);
/* Set IP address to localhost */
hostname[1023] = "\0";
gethostname(hostname, 1023);
printf("HostName: %s\n", hostname); // this one prints correctly
my_hostent = gethostbyname(hostname);
printf("Host: %s\n", my_hostent->h_addr);
printf("IP: %c\n", inet_ntoa(my_hostent->h_addr));
serverAddr.sin_addr.s_addr = *hostname;
А на стороне клиента, у меня есть это, что вы должны написать хост в качестве параметра, поэтому я мог бы написать -h www.abc.com в этом примере, я позволю себе сказать, что мои серверные узлы также находятся на www.abc.com, но они никогда не общаются в данный момент, но когда я печатаю имя хоста, он говорит то же самое.
код клиента.
#define h_addr h_addr_list[0]
struct hostent *server;
server = gethostbyname(hostname);
serverAddr.sin_addr.s_addr = server->h_addr;
переменная «hostname» является параметром из начала программы.
это ошибка клиента:
warning: assignment makes integer from pointer without a cast
serverAddr.sin_addr.s_addr = server->h_addr;
это ошибки сервера:
server.c:42:18: warning: assignment makes integer from pointer without a cast
hostname[1023] = "\0";
^
server.c:43:3: warning: implicit declaration of function ‘gethostname’ [-Wimplicit-function-declaration]
gethostname(hostname, 1023);
^
server.c:48:3: warning: implicit declaration of function ‘inet_ntoa’ [-Wimplicit-function-declaration]
printf("IP: %c\n", inet_ntoa(lol->h_addr));
^
Может кто-нибудь увидеть, что мой отказ с розетками и соединив их вместе?
На данный момент, если я поставил обе стороны INADDR_ANY он будет работать и автоматически подключаться,
пытался также делать: serverAddr.sin_addr.s_addr = lol-> h_addr; но он говорит, что я делаю целое число из указателя без приведения –