Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод из сетевого порядка байт в машинный 
:(
    Опции темы
Nikita0007
  Дата 24.7.2010, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.4.2010

Репутация: нет
Всего: нет



Ребят подскажите пожалуйста как перевести из сетевого порядка байт в обычный.
Если то что я принял от сервера находится в char-овском формате.
Я пробывал делать вот так:
Код

int rc = recv(s,re,6, 0); 
a=ntohs((int)re);

но у меня почему то ниче не получилось;
Помогите плиз.
PM MAIL   Вверх
Tima22
Дата 25.7.2010, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.7.2010

Репутация: нет
Всего: 1



Вот то, что ты пытаеш,ся сделать - получаешь что то через зокет и пытаешься сделать из этого IP адрес.

Я подразумеваю что ты не адрес получаешь через сеть, и что тебе надо только собрать всё воедино

вот так
Код

string s;
char c;
int rs = 0;
do
{
 rs = recv(socket,c,1, 0);
s.append(c);
}while ( rs > 0 )

PM MAIL   Вверх
Nikita0007
Дата 25.7.2010, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.4.2010

Репутация: нет
Всего: нет



Да нет вы наверное меня неправильно поняли. Я просто хочу сделать вот что:сначала я получаю заголовок пакета и из него хочу выдернуть длину самого пакета но так как эта длина передается в сетевом порядке байт мне ее надо конвертнуть в машинный порядок байт подскажите как это сделать.
PM MAIL   Вверх
Tima22
Дата 25.7.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.7.2010

Репутация: нет
Всего: 1



Странно - я один раз задал в google твой вопрос, и вот ответ.

Код

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

struct ip {
unsigned int ip_length:4; /*little-endian*/
unsigned int ip_version:4;
unsigned char ip_tos;
unsigned short ip_total_length;
unsigned short ip_id;
unsigned short ip_flags;
unsigned char ip_ttl;
unsigned char ip_protocol;
unsigned short ip_cksum;
unsigned int ip_source;
unsigned int ip_dest;
};
int main()
{
 int sock, bytes_recieved, fromlen;
 char buffer[65535];
 struct sockaddr_in from;
 struct ip *ip;

 sock = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);

 while(1)
 {
  fromlen = sizeof from;
  recvfrom(sock, buffer, sizeof buffer,0,(struct sockaddr *)&from, &fromlen);
  ip = (struct ip *)buffer;
  printf("IP header length ::: %d\n",ip->ip_length);
 }
}


Если хочешь подробние, то вот  http://www.abmlinux.de/DA/Diplomarbeit.pdf - разбирайся

edit: socket опции могут по разному называться в разных системах. Посмотри как они называются в твоей.

Это сообщение отредактировал(а) Tima22 - 25.7.2010, 19:02
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.