От:
Аноним
Дата: 08.09.06 05:41
Оценка:
Возникла такая проблема. Есть сокет (AF_INET). через функцию send(), как я понял, можно посылать только строки. А как переслать число? Программа, в принципе, простая. Сервер считает количество записей в файле и должен переслать его (число записей) клиенту. А клиент уже потом от этого работать начинает. Вроде проблема небольшая, я как сделать — ХЗ
Здравствуйте, Аноним, Вы писали:
А>...через функцию send(), как я понял, можно посылать только строки. ...
Теперь я знаю о чем думают анонимы когда видят следующее:
ssize_t send(int s, const void *msgbuf, size_t len, int flags);
Колись, что тебя подвигнуло на так понять это?
http://tautology.org/software/man/send
От:
Аноним
Дата: 08.09.06 06:07
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, Аноним, Вы писали:
А>>...через функцию send(), как я понял, можно посылать только строки. ...
CS>Теперь я знаю о чем думают анонимы когда видят следующее:
CS>CS>ssize_t send(int s, const void *msgbuf, size_t len, int flags);
CS>
CS>Колись, что тебя подвигнуло на так понять это?
CS>http://tautology.org/software/man/send
Сиотрел по примеру РСДНа же. Если пишу
char msg[] = "Message\n";
...
send(sock, msg, sizeof(msg2), 0);
Все идет без траблов. А если пишу
int msg = 10;
...
send(sock, msg, sizeof(msg2), 0);
Выходит куча мата
От:
Аноним
Дата: 08.09.06 06:12
Оценка:
int msg = 10;
send(sock,(void*)&msg, sizeof(int), 0);
учи матчасть !
От:
Аноним
Дата: 08.09.06 06:17
Оценка:
Здравствуйте, Аноним, Вы писали:
А>int msg = 10;
А>send(sock,(void*)&msg, sizeof(int), 0);
А>учи матчасть !
О! Заработало... Спасибо! Буду учить, что делать
От:
Alex_Avr
Дата: 08.09.06 10:25
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А если пишу
А>А>int msg = 10;
А>...
А>send(sock, msg, sizeof(msg2), 0);
А>
А>Выходит куча мата
Так ты в sizeof не ту переменную указываешь. Что такое msg2?
Да и во втором параметре должен передаваться указатель, т.е адрес
msg.
Видимо, должно быть так:
int msg = 10;
...
send(sock, (char *)& msg, sizeof (msg ), 0);
Приведение к char*, потому что в VC 7.1 и VC 8 у send () второй параметр имеет тип const char*
С уважением, Александр Авраменко.
От:
hobby
Дата: 08.09.06 13:54
Оценка:
еще в будущем учти один момент. Сейчас можешь не учитывать
если ты когда-либо будешь писать кроссплатформенный код, то числа нужно передавать так:
int data;
int decodedData = htonl (data);
send (..., &decoded data, ...);
а получать — так:
recv (..., &decodedData, ...);
data = ntohl (decodedData);
htonl — Host to Network
ntohl — наоборот.
иначе будут проблемы, связанные с хранением целых чисел на разных платформах.
От:
ArtDenis
Дата: 10.09.06 15:18
Оценка:
Здравствуйте, <Аноним>, Вы писали:
Приведение к типу (void*) необязательно:
send(sock, &msg, sizeof (int ), 0);
... << RSDN@Home 1.1.4 stable rev. 510>>
От:
Mazay
Дата: 10.09.06 16:11
Оценка:
Здравствуйте, Аноним, Вы писали:
А>int msg = 10;
А>send(sock,(void*)&msg, sizeof(int), 0);
А>учи матчасть !
Какую матчасть? Букварь!
Главное гармония ...
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить