Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Как принять через сокет большой объём данных? 18.06.01 21:24 Число просмотров: 906
Автор: Delimiter Статус: Незарегистрированный пользователь Отредактировано 18.06.01 21:31 Количество правок: 1
|
> Показываю > > char buf[0x300], buf2[0x5000]; я бы не советовал тебе так делать
используй
char *buf,*buf2;
.....................
buf=new char[0x300];
buf2=new char[0x5000];
> int n = 0; > SOCKET s; > LPHOSTENT lpHostEntry; > SOCKADDR_IN saServer; > lpHostEntry = gethostbyname("wwwserver"); > if(lpHostEntry == NULL) > { > return 0; > } > s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); > if(s == INVALID_SOCKET) > { > return 0; > } > saServer.sin_family = AF_INET; > saServer.sin_addr = > *((LPIN_ADDR)*lpHostEntry->h_addr_list); > saServer.sin_port = htons(80); ... а где же bind
что должен испоkьзовать сокет со своей стороны или по умолчанию .....:)
> n = connect(s, (LPSOCKADDR)&saServer, > sizeof(SOCKADDR_IN)); > if(n == SOCKET_ERROR) > { > return 0; > } > sprintf(buf, "GET / HTTP/1.1\r\nHost: > wwwserver\r\nUser-Agent: Mozillo/5.0\r\n\r\n"); > UINT a = 0; > UINT b = 0; > b = 0; > while(b < strlen(buf)) > { > a = send(s, (char *)(buf + b), strlen(buf) > - b, NULL); а посылать мона и не побайтно
> b += a; > } > n = recv(s, buf2, sizeof(buf2), NULL); > > Вот и здесь в buf2 не вся инфа что должна
ты и не можешь получить все (или ты контролируешь сервак :)))
но я не думаю что его стек протоколов....
представь я сервер и я решил послать тебе пакет в три приема....:)
посмотри свой код ......ты получишь только первый :))))
возьми снифер и увидишь что именно происходит
сам исправишь или ГДЕ?
ну и в конце
delete[] buf;
delete[] buf2;
|
|
|