nixp.ru v3.0

17 января 2017,
вторник,
00:51:45 MSK

DevOps с компанией «Флант»
t3st3r написал 1 августа 2006 года в 14:32 (300 просмотров) Ведет себя неопределенно; открыл 11 тем в форуме, оставил 14 комментариев на сайте.

Вот прочитал про работу сокетов, так вот в одном из исходников увидел, что серверное приложение создает две переменные:

struct sockaddr_in ss, cs — т.е. для сервера и для клиента, и когда сервер готовится принять запрос от клиента то выполняет

следующее:

len = sizeof(c);

tc = accept(s, (struct sockaddr *)&cs, &cs);

т.е. передает в accept структуру клиента и заполняет ее

а вот в исходниках документации фряхи, я увидел что они используют ту же самую структуру, что для серевера:

b = sizeof(ss);

c = accept(s, (struct sockaddr *)&ss, &b);

Так вот хотелось бы узнать, правильны боа варианта, или где-то ошибка?

И еще, плиз объясните работу этого кода:

   DWORD ret = 0;

   struct hostent * hp = gethostbyname(host);                  // я так понял в поле h_name = должен возвратиться сетевой адрес (или IP)?

   if (!hp) ret = inet_addr(host);                    // эта строка сработает если предыдущая не удалась или нет? как понять?

   if ((!hp)&&(ret == INADDR_NONE)) return 0;  // это если ни gethostbyname(host) ни inet_addr ничиго не вернули правильно?

   if (hp != NULL) memcpy((void*)&ret, hp->h_addr,hp->h_length); // а тут копирование происходит если gethostbyname(host) сработало, и в ret копируется сетевой адрес или нет, т.е. ret потом надо делать htonl(ret) прально?

   return ret;

myst

гугль://UNIX\ sockets\ guide

t3st3r

мля, если ты читал пост, то я сказал что читал описание сокетов, че какой… ты просто счетчик постов накручиваешь что-ли

Longobard

Не понял смысла топика, кто мешает скомпилять выложенный код и посмотреть как он работает? Я могу тебе рассказать как он будет работать, но мне лень. Попробуй сам.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.