Вопрос по Socket'ам

Модератор: Модераторы разделов

Valmount
Сообщения: 2
ОС: ASPLinux

Вопрос по Socket'ам

Сообщение Valmount »

Здравствуй, уважаемый All. у меня subj. Пишу простой сервер на Си, задаю адрес через константу INADDR_ANY. И он мне благополучно выдаёт адрес в локальной сети, а мне нада внешний, то есть в инете. На компе две сетевухи, инет через впн.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вопрос по Socket'ам

Сообщение elide »

как-то подозрительно все это...
давай код. и расскажи, каким образом ты установил, что
он мне благополучно выдаёт адрес в локальной сети
слава роботам!
Спасибо сказали:
Valmount
Сообщения: 2
ОС: ASPLinux

Re: Вопрос по Socket'ам

Сообщение Valmount »

Код: Выделить всё

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <strings.h>
#include <arpa/inet.h>

int main(int argc, char **argv)
{
int sock, bin, list, acep, rec;
socklen_t size;
char msg[20];
struct sockaddr_in addr;
//bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(3000);
size = sizeof(addr);
sock = socket(AF_INET,SOCK_STREAM,0);
if (sock != -1) printf("socket postroen... \n");
bin = bind(sock, (struct sockaddr*)&addr, sizeof(addr));
list = listen(sock, 5);
for(;;)
{
 acep = accept(sock,(struct sockaddr*)&addr, &size);
 if (acep>0)
 {
  do
  {
   bzero(msg, sizeof(msg));
   rec = recv(acep, msg, 20, 0);
   if (rec > 0)
   {
    if (strncmp("echo", msg, 4) == 0)
     send(acep, msg, sizeof(msg), 0);
    printf("noJIy4eHo: %s\n", msg);
   }
   else
    printf("client otklyu4ilsya. jdem novogo...\n");
  }
  while ((rec != 0) && strncmp("bye", msg, 3) != 0);
  close(acep);
  }
}
close(sock);
return(0);
}

задаю адрес константой INADDR_ANY:
addr.sin_addr.s_addr = htonl(INADDR_ANY);
В итоге принимает соединение тока на одной сетевухе.

сорьки). намудил с файерволлом).

тег code придуман не просто так.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вопрос по Socket'ам

Сообщение elide »

addr.sin_addr.s_addr = htonl(INADDR_ANY);
забавно. интересно, а какого ты ожидаешь эффекта от применения htonl на INADDR_ANY ? (:
слава роботам!
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Вопрос по Socket'ам

Сообщение d_n_k »

забавно. интересно, а какого ты ожидаешь эффекта от применения htonl на INADDR_ANY ? (:

ничего страшного не произайдет, тк INADDR_ANY ~ 0
все сказанное есть имхо...
Спасибо сказали: