Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.08.2007, 20:04
|
|
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме: 413927
Репутация:
71
|
|
Сообщение от X-lord
смысл ясен?
=) в том то и дело что не ясно
в том примере откуда взяты эти функции, они написаны с учетом что первые 2 байта сообщения будут содержать длину пришедшего сообщения, потом в куче выделяется место под запрос и читается челиком, ты же на все забил и сделал голую статику причем интересное место =)
if (recv(hSock,&Buff[0],sizeof(Buff[0]),MSG_PEEK)<=0) return WSAGetLastError();
ты читаешь 4 байта
if (RecvData(hSock,&Buff[0],sizeof(Buff))!=0) return WSAGetLastError();
а потом снова пытаешься прочитать 4 байта только уже другой фунуцией
Последний раз редактировалось da_ff; 01.08.2007 в 21:59..
|
|
|

02.08.2007, 01:34
|
|
Banned
Регистрация: 16.12.2006
Сообщений: 27
Провел на форуме: 110871
Репутация:
-17
|
|
if (recv(hSock,&Buff[0],sizeof(Buff[0]),MSG_PEEK)<=0) return WSAGetLastError();
тормозим до момента приёма команды... с MSG_PEEK следующая ресив прочтёт эти 1! байта....
всм. блокирующий вызов без очистки вход. буфера
Последний раз редактировалось X-lord; 02.08.2007 в 01:40..
|
|
|

02.08.2007, 01:39
|
|
Banned
Регистрация: 16.12.2006
Сообщений: 27
Провел на форуме: 110871
Репутация:
-17
|
|
if (RecvData(hSock,&Buff[0],sizeof(!!!!Buff!!!!))!=0) return WSAGetLastError();
а потом снова пытаешься прочитать 4 байта только уже другой фунуцией
весь буфер
Последний раз редактировалось X-lord; 02.08.2007 в 03:47..
|
|
|

02.08.2007, 01:41
|
|
Banned
Регистрация: 16.12.2006
Сообщений: 27
Провел на форуме: 110871
Репутация:
-17
|
|
ЗАТУПИЛ=)
забыл размерность Char =)
|
|
|

02.08.2007, 02:34
|
|
Banned
Регистрация: 16.12.2006
Сообщений: 27
Провел на форуме: 110871
Репутация:
-17
|
|
ты же на все забил и сделал голую статику
мне показалось - оптимальный вариант
а по хорошему ты прав... надо клиент делать на основе неблокирующих сокетов и
передавать (размер\ком\сабком\датален\ ата)
но пока пусть будет так
|
|
|

02.08.2007, 03:46
|
|
Banned
Регистрация: 16.12.2006
Сообщений: 27
Провел на форуме: 110871
Репутация:
-17
|
|
оцени код по 10-и бальной шкале криворукости кодера
|
|
|

02.08.2007, 19:17
|
|
Новичок
Регистрация: 25.12.2006
Сообщений: 17
Провел на форуме: 65328
Репутация:
10
|
|
Хай!
1. Как лучше(и правильней) отделить заголовок от данных полученых с веб-сервера?
2. Как лучше получать данные с веб-сервера, что бы не ждать, пока по таймауту recv вернет false?
Код:
/*--------Эту херню нада заменить нах-------*/
do
if (recv(inet_Sock,Buff,4096,0)){
//MessageBox(0,Buff,"Recv",0);
}else break;
while (1);
/*------------------------------------------*/
|
|
|

02.08.2007, 19:47
|
|
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме: 413927
Репутация:
71
|
|
2 aivus
1)последовательность "\r\n\r\n" ты б хоть ознакомился с протоколом прежде чем что нибудь писать
2)используй асинхронные сокеты
|
|
|

02.08.2007, 20:04
|
|
Новичок
Регистрация: 25.12.2006
Сообщений: 17
Провел на форуме: 65328
Репутация:
10
|
|
1)последовательность "\r\n\r\n" ты б хоть ознакомился с протоколом прежде чем что нибудь писать
2)используй асинхронные сокеты
1)Я как раз думал написать в предыдущем посте "кроме \r\n\r\n". Просто думал мож можно как-то иначе, ладно... буду юзать этот способ...
2)Да тут дело как раз не в том... Просто имхо неправильно ждать таймаута recv и только потом ломать цыкл...
|
|
|

03.08.2007, 19:31
|
|
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
Такой вопросец: что делает следущая функция cout.setf(ios::left);
в учебнике вроде как написано, что сдвигает следущую надпись влево.
Но когда я записывают код типа:
cout<<123;
cout.setf(ios::left);
cout<<456;
у меня выводится на экран: 123456
Может кто подробнее написать, что делает эта функция? (таже в учебнике написано, что по умолчанию стоит cout.setf(ios::right), типа следующая запись выводится справа)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|