
17.06.2009, 20:01
|
|
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
Провел на форуме: 505362
Репутация:
66
|
|
Я так и пытался делать. Проблема в том, что если размер буфера чуть больше кол-ва оставшихся байт то он пытается что то читать (около минуты функция висит)
вот кусок кода
PHP код:
#define PORT 80
#define SERVERADDR "forum.antichat.ru"
char * connect()
{
WSADATA wd;
char buff[256] = "\0";
char text[100000] = "\0";
char buff2[10000]="GET / HTTP/1.1\r\nHost: forum.antichat.ru\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept-Language: ru,en-us;q=0.7,en;q=0.3\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n";
printf ( "TCP Client \n" );
if ( WSAStartup ( 0x202, &wd ) )
{
return "[Connection error]";
}
SOCKET sock ;
sock=socket ( AF_INET, SOCK_STREAM, 0 );
if ( sock < 0 )
{
return "[Socket error]";
}
sockaddr_in dest_addr;
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons ( PORT );
HOSTENT *hst;
if( inet_addr(SERVERADDR) != INADDR_NONE )
dest_addr.sin_addr.S_un.S_addr = inet_addr(SERVERADDR);
else if( hst=gethostbyname ( SERVERADDR ) )
( ( unsigned long * ) &dest_addr.sin_addr )[0]=((unsigned long** )hst->h_addr_list)[0][0];
else
{
closesocket( sock ) ;
WSACleanup();
return "[Bad address]";
}
if(connect( sock, (sockaddr *)&dest_addr, sizeof(dest_addr) ))
{
return "[Connection error]";
}
send( sock, buff2, strlen(buff2), 0);
int x = 1;
FILE * ff = fopen("log.txt","w");
while (x>0)
{
x = recv( sock, buff, 256, 0 ); // 256 - buffer size
strcat(text,buff);
fputs(buff,ff);
}
fclose(ff);
return text;
}
Последний раз редактировалось awdrg; 17.06.2009 в 20:07..
|
|
|